查询AppEngine中模型的list属性中存在的值

msh*_*rir 9 google-app-engine bigtable

样本模型:

  class Foo(db.Model):
     id = db.IntegerProperty()
     bar = db.ListProperty(int, required=True)
Run Code Online (Sandbox Code Playgroud)
  1. 如何使用Query或GqlQuery查询返回其bar属性中具有给定值的所有Foo实体?

  2. 如果我有一个id列表,是否有一个过滤器将返回其id属性在该列表中的所有实体?

Sax*_*uce 7

1.

如果在list属性上使用equals查询,它将检查列表中的所有项:

search = 2
results = Foo.all().filter('bar =', search).fetch()
Run Code Online (Sandbox Code Playgroud)

2.

您可以使用IN过滤器,但请注意,在内部这会对列表中的每个项目进行数据存储查询,因此可能很慢,并且每个请求最多也有30个内部查询.

items = [1, 2, 3]
results = Foo.all().filter("id IN", items).fetch()
Run Code Online (Sandbox Code Playgroud)

有关1和2的详细信息,请参阅"查询简介",有关1的详细信息,请参阅ListProperty.