【问题标题】:gcloud datastore: Can I filter with IN or Contains operator?gcloud datastore:我可以使用 IN 或 Contains 运算符进行过滤吗?
【发布时间】:2018-09-09 23:33:45
【问题描述】:

我是 Datastore gCloud 的新手。我想在一个名为 Score 的实体中过滤与公司列表相关的所有分数。我的实体形成如下:

{
    "company_id": 1,
    "score": 100, 
}

我有几个具有不同公司 ID 的实体。我尝试使用 query.add_filter 命令进行过滤,但收到错误 ValueError:

('无效的表达式:"IN"', '请使用以下之一:=, ,> =.')

错误的原因对我来说非常清楚,但除了上述错误消息中列出的类型之外,我还没有在文档中找到有关如何使用 IN 或 CONTAINS 运行过滤器的任何内容。

【问题讨论】:

    标签: python-3.x google-cloud-platform google-cloud-datastore gcloud


    【解决方案1】:

    数据存储不支持您寻找的过滤器运算符。 Filters 中列出了唯一受支持的:

    比较运算符可以是以下任意一种:

    Operator                  Meaning
    EQUAL                     Equal to
    LESS_THAN                 Less than
    LESS_THAN_OR_EQUAL        Less than or equal to
    GREATER_THAN              Greater than
    GREATER_THAN_OR_EQUAL     Greater than or equal to
    

    一些客户端库可能会提供一些等价物,但有一些限制。例如,标准环境 GAE 特定的 ndb 库(在您的上下文中不可用)提供了这种支持。 The != and IN Operations 中的示例很有用,因为您可以在代码中以类似的方式实现它:

    同样,IN 操作

    property IN [value1, value2, ...]
    

    测试可能值列表中的成员资格,是 实现为

    (property == value1) OR (property == value2) OR ...
    

    【讨论】:

      猜你喜欢
      • 2015-06-07
      • 1970-01-01
      • 2010-11-03
      • 2021-06-28
      • 2012-03-21
      • 2010-11-28
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多