【问题标题】:GAE ndb query != tagGAE ndb 查询!= 标签
【发布时间】:2012-08-08 05:20:57
【问题描述】:

在文档中它说没有办法查询不包含等于特定值的标签的实体:https://developers.google.com/appengine/docs/python/ndb/queries#neq_and_in

我有一组实体,每个实体都有一组标签。我需要找到那些没有特定标签的实体。 ndb 查询限制有什么解决方法吗?

【问题讨论】:

  • 如果您的标签集很小,或者如果您要执行“WITHOUT”查询的标签集很小,请添加“not_tags”属性(列表属性或“repeated=True " 如果对实体也使用 ndb)。这将包含您的 tags 属性的倒数,或适当的 WITHOUT 子集。正如彼得在下面提到的,您将拥有一个可以查询的索引。如果您的标签集很大,这可能行不通。

标签: google-app-engine google-cloud-datastore


【解决方案1】:

每次创建/更新实体时,它的索引都会根据它的属性值进行更新。

如果属性不存在或列表属性不包含值(在您的情况下为标记),则索引中没有它的条目。由于查询依赖于索引来查找内容,因此不会被找到。

这不是 NDB 查询限制,而是 GAE 数据存储限制,这意味着访问它的所有 API 都具有此限制(Java/Python/Go、低级 API 等)。

AFAIK,没有直接的解决方法。您可以通过获取所有文章然后为缺少标签的人签入代码来绕过它,但这可能会根据文章的数量而代价高昂。

您可能想创建一个新问题并从应用程序的角度详细描述该问题:您要达到的最终结果是什么?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    相关资源
    最近更新 更多