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 に答える