1

我知道每个实体有 5000 个索引条目的限制,这意味着我不能做这样的事情:

class Foo(db.Model):
   x = db.ListProperty(int)
   y = db.ListProperty(int)

foo1 = Foo(x = range(5001))
foo1.put()

此外,如果我在 index.yaml 中有索引

- kind: Foo
 properties:
 - name: x
 - name: y

然后我也从这个线程中看到:

http://groups.google.com/group/google-appengine/browse_thread/thread/d5f4dcb7d00ed4c6

我不能这样做:

foo2 = Foo(x = range(100), y=range(100))
foo2.put()

因为那会给我 10,000 个索引条目。

但是,我的问题是:如果我在 index.yaml 中没有任何条目 Foo 并尝试:

foo3 = Foo(x = range(100), y=range(100))
foo3.put()

这仍然会引发“BadRequestError:实体的索引属性过多”异常吗?从我的测试来看,它看起来不会导致任何错误。它是否正确?在这种情况下 foo3 会有多少索引条目?是 200(每个列表长度的总和)吗?或者是其他东西?

4

1 回答 1

2

你是对的——这不会引发任何异常,它会创建 200 个索引条目。

这适用于复合索引的方式是为每个唯一的值组合创建一个索引行,而内置索引为每个值创建一个索引行 - 它们相当于在您的每个属性上定义一个单独的单一属性索引模型。

于 2010-12-19T23:22:55.060 回答