在ndb模型中按ID过滤

时间:2016-02-08 16:50:23

标签: google-cloud-datastore app-engine-ndb google-app-engine-python nosql

我正在使用ndb模型作为我的数据库。我想要做的是根据id列表过滤结果。 我有我的模型:

class Photo(ndb.Model):
   userid = ndb.StringProperty()

   source = ndb.StringProperty()
   handle = ndb.StringProperty()
   sourceid =ndb.StringProperty()

所以我正在尝试这样的查询:

              queryset=Photo.query(Photo.key.id().IN(photoid_list))

我也尝试过:

              queryset=Photo.query(Photo.id().IN(photoid_list))

其中photoid_list是id列表。 帮我解决一下。

2 个答案:

答案 0 :(得分:1)

我建议您从每个ID创建密钥,然后立即获取所有密钥:

photo_keys = [ndb.Key(Photo, id) for id in photoid_list]
photos = ndb.get_multi(photo_keys)

优点是get比查询更快。此外,ndb将按密钥对实体进行内存缓存,并使后续内容更快。

答案 1 :(得分:0)

文档中有一些例子:
https://cloud.google.com/appengine/docs/python/ndb/queries#neq_and_in

所以看起来您的查询应该是:

queryset=Photo.query(Photo.id.IN(photoid_list))