0

我使用了ndb 投影,但它确实改变了结果,结果如何不受投影的影响?

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 ?

谢谢

4

1 回答 1

5

空的列表属性 (repeated=True) 不会被索引,因为它是投影查询用来返回结果的索引,所以不会返回没有属性值的实体。您的测试用例容易受到 Tim 的评论提到的最终一致性影响,但这不是唯一的问题。

于 2012-08-24T17:39:35.263 回答