Java 如何从Firestore中多个文档的数组中删除元素?
我有一个用户集合。每个用户都有一个名为favoriteNames的数组Java 如何从Firestore中多个文档的数组中删除元素?,java,android,firebase,kotlin,google-cloud-firestore,Java,Android,Firebase,Kotlin,Google Cloud Firestore,我有一个用户集合。每个用户都有一个名为favoriteNames的数组 但它不起作用。如何从所有阵列中删除Ana?如果我没有误解您的问题,您希望从一个阵列中删除特定项,在本例中为Ana。 我已经创建了一个这样做的样本,让我知道如果是你正在寻找 fun main() { val a = arrayListOf("Joan", "Skizo", "Ana") val b = a.minus("Ana") pr
但它不起作用。如何从所有阵列中删除Ana?如果我没有误解您的问题,您希望从一个阵列中删除特定项,在本例中为Ana。 我已经创建了一个这样做的样本,让我知道如果是你正在寻找
fun main() {
val a = arrayListOf("Joan", "Skizo", "Ana")
val b = a.minus("Ana")
print(b)
}
什么是印刷
[琼,斯基佐]
为此,您可以使用
返回一个列表,其中包含原始集合中的所有元素,而给定元素没有第一次出现
关于这一点,你必须阅读,写下你想要的,然后从列表中删除它们,然后写回
另外,这可能会对更新方法有所帮助,我想说:
这个问题可能也会帮助您不可能使用Firestore执行类似SQL的更新where类型查询。如果要更新多个文档,则必须分别更新每个文档。如果需要,您可以使用事务或批写入以原子方式执行所有更新 至少,您在这里要做的是: 查询所有要更新的文档。这将涉及到做一个全面的分析
usersRef.whereArrayContains("favoriteNames", "Ana")
迭代查询结果
对于每个匹配,获取其DocumentReference并使用带有FieldValue.arrayRemoveAna的update
谢谢,但这些阵列实际上在Firestore中。请检查编辑。根据第一个答案示例,我正在将整个对象传递给arrayRemove函数。这个物体里什么都没有。第二个答案是只更新一个文档,我需要更新集合中的所有文档。其中,ArrayContains是一个查询,返回多个文档。@LisDya您需要以编程方式执行此操作,正如本答案中所述,您需要添加一个更新块,然后删除重新打开问题所需的Ana ThingyTank。我想关闭它的人并不真正理解我的真正要求:我现在明白了,在所有文档中执行更新需要两个步骤。这就是我要找的。救了我一天!!!!!
fun main() {
val a = arrayListOf("Joan", "Skizo", "Ana")
val b = a.minus("Ana")
print(b)
}
usersRef.whereArrayContains("favoriteNames", "Ana")
snapshot.reference.update("favoriteNames", FieldValue.arrayRemove("Ana"))