我有一个用户集合。每个用户都有一个名为的数组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 的“更新位置”类型查询。如果您有多个文档需要更新,则必须单独更新每个文档。如果需要,您可以使用事务或批量写入以原子方式执行所有更新。
至少,您在这里需要做的是:
-
查询所有要更新的文档。这将涉及做一个数组包含查询 https://firebase.google.com/docs/firestore/query-data/queries#array_membership为了所有的“安娜”。
usersRef.whereArrayContains("favoriteNames", "Ana")
-
迭代查询结果。
-
对于每个匹配文档快照 https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentSnapshot,获取其DocumentReference并使用update()
with FieldValue.arrayRemove("Ana")
snapshot.reference.update("favoriteNames", FieldValue.arrayRemove("Ana"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)