具有结构化属性和投影的 NDB 查询给出意外结果
NDB query with structured propertiy and projection give unexpected result
嗨,我有这些模型:
class TagProprieta(ndb.Model):
tag = ndb.StringProperty()
stato = ndb.StringProperty()
class RegDevice(ndb.Model):
comune_key = ndb.KeyProperty()
reg_id = ndb.StringProperty()
tags = ndb.StructuredProperty(TagProprieta, repeated=True)
....
此查询returns预期结果(包含一些 RegDevice 对象的列表):
registration_ids = models.RegDevice.query(\
models.RegDevice.comune_key==comune_key,\
models.RegDevice.tags == models.TagProprieta(tag=tag, stato='1')\
).fetch()
因为我只需要字段reg_id,所以我把最后一行改成这样:
.fetch(projection=[models.RegDevice.reg_id])
结果是一个空列表:[ ]
如果我有并且 错误 由于 NDB 的限制,我会非常好,但在我看来 空列表不正确。
我做错了什么吗?我唯一的机会是使用前一个查询,然后在内存中处理结果吗?谢谢
试试这个:
registration_ids = models.RegDevice.query(\
models.RegDevice.comune_key==comune_key,\
models.RegDevice.tags == models.TagProprieta(tag=tag, stato='1'),\
projection=[models.RegDevice.reg_id]
).fetch()
必须为 reg_id
编制索引才能使投影正常工作。
尝试在 index.yaml
中手动设置它
- kind: RegDevice
properties:
- name: reg_id
嗨,我有这些模型:
class TagProprieta(ndb.Model):
tag = ndb.StringProperty()
stato = ndb.StringProperty()
class RegDevice(ndb.Model):
comune_key = ndb.KeyProperty()
reg_id = ndb.StringProperty()
tags = ndb.StructuredProperty(TagProprieta, repeated=True)
....
此查询returns预期结果(包含一些 RegDevice 对象的列表):
registration_ids = models.RegDevice.query(\
models.RegDevice.comune_key==comune_key,\
models.RegDevice.tags == models.TagProprieta(tag=tag, stato='1')\
).fetch()
因为我只需要字段reg_id,所以我把最后一行改成这样:
.fetch(projection=[models.RegDevice.reg_id])
结果是一个空列表:[ ]
如果我有并且 错误 由于 NDB 的限制,我会非常好,但在我看来 空列表不正确。 我做错了什么吗?我唯一的机会是使用前一个查询,然后在内存中处理结果吗?谢谢
试试这个:
registration_ids = models.RegDevice.query(\
models.RegDevice.comune_key==comune_key,\
models.RegDevice.tags == models.TagProprieta(tag=tag, stato='1'),\
projection=[models.RegDevice.reg_id]
).fetch()
必须为 reg_id
编制索引才能使投影正常工作。
尝试在 index.yaml
- kind: RegDevice
properties:
- name: reg_id