我正在尝试运行一个简单的查询,在其中搜索包含对象数组中的值的文档。
例如,看看我的数据库结构:
我想运行类似这样的查询:
db.collection('identites').where("partyMembers", "array-contains", {name: "John Travolta"})
实现这一目标的正确方法是什么,Firestore甚至可以吗?
谢谢。
例如,看看我的数据库结构:
我想运行类似这样的查询:
db.collection('identites').where("partyMembers", "array-contains", {name: "John Travolta"})
谢谢。
正如弗兰克在他的回答中解释的那样,使用数组包含来查询存储在数组中的对象的特定属性是不可能的。
但是,有一种可能的解决方法:在您的情况下,实际上可以查询整个 object,如下所示:
db.collection('identites').where("partyMembers", "array-contains", {id: "7LNK....", name: "John Travolta"})
也许这种方法会满足您的需求(或者可能不会....)。
这些array-contains
操作检查数组是否包含特定(完整)值。它无法检查对象数组是否包含具有特定属性值的项目。
进行查询的唯一方法是在文档中添加一个附加字段,其中仅包含您要查询存在的值。例如:partyMemberNames: ["John Travolta", "Olivia Newton"]
.