2011-08-12 53 views
1

我在數據存儲中更新了我的模型,所以現在它有一個附加字段。現在我有實體有和沒有該字段,但我需要將此字段添加到所有尚未擁有它的實體。想法是讓實體在沒有該字段的功能中添加它。那麼,我想知道如何在數據存儲請求中過濾這些實體?檢查實體中是否存在字段

回答

1

無法財產不存在進行篩選。每個查詢都必須通過索引來滿足,並且沒有缺乏給定屬性的實體的「負指數」。

通常,您需要遍歷所有實體,並忽略已有屬性的實體。

1

它可能不是那麼容易,但我想這是可能的。

你不能沒有屬性來獲取實體:

那場比賽實體缺少物業

這是不可能的查詢那些缺少給定屬性的實體過濾器沒有用的。一種替代方法是創建一個默認值爲None的固定(建模)屬性,然後爲具有作爲屬性值的實體創建過濾器。

你可以得到特定屬性的所有過濾:

篩選或排序上的屬性要求屬性存在

如果酒店有查詢過濾條件或排序順序,該查詢僅返回那些具有該屬性值(包括空值)的數據存儲實體。 一種實體不需要具有相同的屬性。對屬性的過濾器只能匹配具有該屬性值的實體。如果某個實體對過濾器或排序順序中使用的屬性沒有值,則該實體從爲該查詢構建的索引中省略。

我的建議是從所有的密鑰中獲取密鑰,並從具有該屬性的實體中減去密鑰。

參考: http://code.google.com/intl/en-US/appengine/docs/python/datastore/queries.html#Overview

+0

你的建議只有在你可以在內存中保存所有密鑰的列表時纔有效,而且無論如何都是毫無意義的,因爲很少有實體已經擁有該屬性。正如德魯所說,映射所有實體是一個更好的主意。 –

相關問題