如何搜索结构化属性?谷歌应用引擎

时间:2014-11-24 13:03:05

标签: google-app-engine data-structures app-engine-ndb google-cloud-datastore

我有两个模型类别和城市:

class category(ndb.Model):
      hidden = ndb.BooleanProperty()
      categoryName = ndb.StringProperty()

class city(ndb.Model):
      categories = ndb.StructuredProperty(category,repeated = True)
      cityName = ndb.StringProperty()

我有cityEntity: 如何返回仅包含category.hidden = false?

的类别列表

编辑: 可以获取类别列表,然后循环浏览类别列表并仅提取未隐藏的类别

例如我有城市实体:

categories_unhidden_list = []
for category in city.categories :
    if not category.hidden :
        categories_unhidden_list.append(category)

但我想从数据存储中获取categories_unhidden_​​list!

1 个答案:

答案 0 :(得分:0)

查询将仅匹配查询的内容。如果实体满足条件,它将返回实体。如果您有重复属性并且查询与其中一个值匹配,则它将返回实体中的整个列表,而不仅仅是匹配的列表。这就是为什么重复属性应该几乎总是键,简单值或简单键值对的原因。

您可能希望查看A)projection queries和B)构建数据,以便查询值为x且父实体为key_y的类别而不是查询Y在重复列表中key_x的位置。