Firestore通过数组的字段值查询

时间:2019-01-07 20:58:56

标签: reactjs firebase google-cloud-firestore react-redux-firebase

我正在尝试运行一个简单的查询,在其中搜索包含对象数组内的值的文档。

例如,查看我的数据库结构:

firestore db

我想运行与此类似的查询:

db.collection('identites').where("partyMembers", "array-contains", {name: "John Travolta"})

实现此目标的正确方法是什么,甚至使用Firestore也可以吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

正如弗兰克(Frank)在他的回答中解释的那样,对于包含数组的对象,不可能查询存储在数组中的对象的特定属性。

但是,有一种可能的解决方法:根据您的情况,实际上可以查询整个对象,如下所示:

db.collection('identites').where("partyMembers", "array-contains", {id: "7LNK....", name: "John Travolta"})

也许这种方法可以满足您的需求(或可能不...。)

答案 1 :(得分:2)

array-contains操作检查数组是否包含特定(完整)值。它无法检查对象数组是否包含具有特定属性值的项目。

执行查询的唯一方法是在文档中添加一个仅包含您要查询存在的值的字段。例如:partyMemberNames: ["John Travolta", "Olivia Newton"]