我有一组用户。每个用户都有一个名为 favoriteNames
的数组。
root <- [Firestore]
users <- [Collection]
uid <- [Document]
favoriteNames: ["Ana", "Jane", "Dave"] <- [Array]
uid<- [Document]
favoriteNames: ["Ana", "Merry", "John"] <- [Array]
我想从所有文档中删除“Ana”。这是我尝试过的:
usersRef.whereArrayContains("favoriteNames", FieldValue.arrayRemove("Ana").get()
但是这不起作用。如何从所有数组中删除“Ana”?
最佳答案
无法使用 Firestore 执行类似 SQL 的“更新位置”类型查询。如果您有多个文档需要更新,则必须单独更新每个文档。如果需要,您可以使用事务或批量写入以原子方式执行所有更新。
至少,您在这里需要做的是:
查询所有要更新的文档。这将涉及执行 array-contains query对于所有“安娜”。
usersRef.whereArrayContains("favoriteNames", "Ana")
迭代查询结果。
对于每个匹配的 DocumentSnapshot ,获取其 DocumentReference 并将
结合使用update()
与FieldValue.arrayRemove("Ana")
snapshot.reference.update("favoriteNames", FieldValue.arrayRemove("Ana"))
关于java - 如何从 Firestore 中多个文档的数组中删除元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62675759/