【问题标题】:How to search structured properties ? google app engine如何搜索结构化属性?谷歌应用引擎
【发布时间】:2014-11-24 13:03:04
【问题描述】:

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

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 !

【问题讨论】:

  • @voscausa 谢谢,但这不返回类别列表,返回城市实体,我编辑问题以澄清!
  • 是的,查询返回包含 ...(您查询的位置)的整个实体。从过滤后的实体中,您可以提取类别列表以进行列表处理。
  • 嗯,好的,谢谢,我只是认为数据存储可以返回过滤后的列表,(在我的代码中没有这样做),因为数据存储可以更有效地做到这一点。

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


【解决方案1】:

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

您可能需要查看 A) projection queries 和 B) 结构化数据,以便您可以查询具有 x 值和 key_y 父实体的类别,而不是查询 Y他们的重复列表中有key_x

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2019-09-19
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多