Firestore通过数组的字段值查询

sis*_*del 6 firebase reactjs google-cloud-firestore react-redux-firebase

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

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

消防员数据库

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

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

实现此目标的正确方法是什么,Firestore是否有可能?

谢谢。

Fra*_*len 18

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

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


Ren*_*nec 6

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

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

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

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

  • @RenaduTamec,您好,终于成功了,请求字段的名称拼写错误。感谢您的支持,您的回复让我坚持并找到解决方案。 (2认同)
  • @VictorDias 酷!很高兴听到我可以帮助你。如果您觉得我的回答对您有帮助,可以点赞哦!谢谢 (2认同)