我使用了ndb projection,但它确实改变了结果,结果如何不受投影的影响?
class T(ndb.Model):
name = ndb.StringProperty()
name2 = ndb.StringProperty(repeated=True)
@classmethod
def test(cls):
for i in range(0, 10):
t = T(name=str(i))
if i%2 == 0:
t.name2=["zzz"]
t.put()
qr = T.query()
qo = ndb.QueryOptions(projection=['name', 'name2'])
items, cursor, more = qr.fetch_page(20, options=qo)
print len(items)
qo = ndb.QueryOptions(projection=['name'])
items, cursor, more = qr.fetch_page(20, options=qo)
print len(items)
结果是5,10
如何使结果是10,10?
由于
答案 0 :(得分:5)
空list-property(repeated = True)不会被索引,因为它是投影查询用于返回结果的索引,所以不会返回没有属性值的实体。 您的测试用例 易受Tim的评论提及的最终一致性的影响,但这不是唯一的问题。