在Google App Engine中查询NDB JsonProperty可能吗?如果不行,有其他替代方案吗?
有没有办法在NDB/GAE中使用JsonProperties进行查询?我找不到相关的信息。
Person.query(Person.custom.eye_color == "blue").fetch()
假设我们的模型大概是这样的:
class Person(ndb.Model):
height = ndb.IntegerProperty(default=-1)
#...
#...
custom = ndb.JsonProperty(indexed=False, compressed=False)
使用场景是这样的:我在存储客户数据,最开始我们只需要查询特定的数据。现在,我们希望能够查询关于这些人的任何注册信息。例如,眼睛颜色,有些人可能在系统中填写了这个,或者我们JsonProperty中的任何其他自定义键/值对。
我知道有expando类,但对我来说,查询jsonproperty似乎更简单,而且可以把所有自定义属性放在同一个“名称”下;custom。这样前端就可以直接遍历custom中的属性。如果使用expando类,就会更难区分了。
1 个回答
2
你有没有想过用结构化属性(StructuredProperty)来代替 JSON 属性(JSONProperty)呢?这样你可以保持相同的结构,只是存储的方式不同而已。而且你还可以根据结构化属性的子组件进行过滤,虽然有一些限制,但这可能已经足够了。
想了解如何查询结构化属性,可以查看这个链接:https://developers.google.com/appengine/docs/python/ndb/queries#filtering_structured_properties