我正在尝试运行一个简单的查询,在其中搜索包含对象数组中的值的文档。
例如,看看我的数据库结构:
我想运行一个类似于这样的查询:
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"]
。