gcloud datastore:我可以使用IN或Contains运算符进行过滤吗?

时间:2018-03-30 23:25:15

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

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

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

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

  

('无效的表达式:“IN”','请使用以下之一:=,<,< =,>,> =。')

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

1 个答案:

答案 0 :(得分:3)

数据存储区不支持您搜索的过滤器运算符。唯一受支持的列表在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 ...