我希望过滤符合所有条件的数组中的元素。
就像我有一个数组
试验: [{ “ORGANIZATIONNAME”: “strge”, “familyName”: “拉朱”},{ “ORGANIZATIONNAME”: “沙”, “familyName”: “沙”}]
我需要在同一个元素中过滤所有条件的查询。我发现它在mongo中使用$ elemMatch但在谷歌数据存储区中没有找到类似的查询。
答案 0 :(得分:1)
您可以将Cloud Datastore中数组值的相等过滤器视为CONTAINS
过滤器。
因此,如果您的GROUP
实体具有members
属性:
members: [
{ firstName: 'Alice', lastName: 'Smith' }
{ firstName: 'Bob' , lastName: 'Miller' }
]
你可以跑:
SELECT * FROM Group WHERE
members.firstName = 'Alice'
AND members.lastName = 'Smith'
AND members.firstName = 'Bob'
AND members.lastName = 'Miller'
它将返回上述结果。
但是,此查询不会检查firstName
和lastName
值是否出现在相同的member
值中。因此,此查询还将返回一个Group
实体,其外观如下:
members: [
{ firstName: 'Alice', lastName: 'Jones' }
{ firstName: 'Bob' , lastName: 'Jones' }
{ firstName: 'Chris', lastName: 'Miller' }
{ firstName: 'Denise', lastName: 'Smith' }
]
为了防止这种情况,您必须运行第一个查询,然后进行客户端过滤。