gcloud 数据存储:我可以使用 IN 或 Contains 运算符进行过滤吗?

ECC*_*ECC 2 python-3.x google-cloud-datastore google-cloud-platform gcloud

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

\n\n
{\n\xc2\xa0\xc2\xa0\xc2\xa0 "company_id": 1,\n\xc2\xa0\xc2\xa0\xc2\xa0 "score": 100, \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
\n

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

\n
\n\n

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

\n

Dan*_*scu 5

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

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

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
Run Code Online (Sandbox Code Playgroud)

某些客户端库可能提供一些等效项,但有限制。例如,标准环境 GAE 特定ndb库(在您的上下文中不可用)提供了此类支持。!= 和 IN 操作中的示例非常有用,因为您可以在代码中以类似的方式实现它:

类似地,IN 操作

property IN [value1, value2, ...]
Run Code Online (Sandbox Code Playgroud)

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

(property == value1) OR (property == value2) OR ...
Run Code Online (Sandbox Code Playgroud)