FieldValue.arrayRemove() 根据属性值从对象数组中删除对象

Nim*_*hew 8 dart firebase flutter google-cloud-firestore

我有一个具有以下结构的文档:

{
    "email" : "a@gmail.com",
    "value" : 100,
    "children" : [
                  {
                    "email" : "b@gmail.com",
                    "value" : 100
                  },
                  {
                    "email" : "b@gmail.com",
                    "value" : 200
                  }
                 ]
}
Run Code Online (Sandbox Code Playgroud)

b@gmail.com我想从数组中删除包含电子邮件的所有元素children。如果我像这样传递要删除的整个对象,我就可以删除一项:

FieldValue.arrayRemove(childObject)

b@gmail.com但我希望删除带有电子邮件的两个对象。无论如何可以使用 来实现此目的吗FieldValue.arrayRemove()

Fra*_*len 8

arrayRemove操作将从数组中删除您指定的确切项目。无法传递部分对象并删除与部分信息匹配的所有数组项。您必须传递要删除的每个完整项目。

如果您还不知道这些项目是什么,通常必须首先读取文档,循环遍历数组中的项目以删除它们,然后将修改后的数组写回到文档中。