Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从Firestore中多个文档的数组中删除元素?_Java_Android_Firebase_Kotlin_Google Cloud Firestore - Fatal编程技术网

Java 如何从Firestore中多个文档的数组中删除元素?

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

我有一个用户集合。每个用户都有一个名为favoriteNames的数组


但它不起作用。如何从所有阵列中删除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"))