在Google App Engine中查询NDB JsonProperty可能吗?如果不行,有其他替代方案吗?

2 投票
1 回答
2243 浏览
提问于 2025-04-17 22:17

有没有办法在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

撰写回答