在ndb模型中按id过滤

filter by id in ndb model

我正在使用 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 列表。 帮我解决一下。

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

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

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

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

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

优点是get比查询快。此外,ndb 将按键缓存实体并使后续获取更快。