我想更改集合中所有文档中的单个字段。我如何在Java中做到这一点? 馆藏结构:
"Users"
== SCvm1SHkJqQHQogcsyvrYC9rhgg2 (user)
- "isPlaying" = false (field witch I want to change)
== IOGgfaIF3hjqierH546HeqQHhi30
- "isPlaying" = true
我尝试使用类似的方法,但这是可行的
fStore.collection("Users").document().update("isPlaying", false);
我进行了研究,发现question about the same problem,但这是我不理解的JavaScript语言。谢谢。
答案 0 :(得分:1)
答案 1 :(得分:1)
要更新文档,您必须知道该文档的完整路径。如果您不知道完整路径,则需要load each document from the collection确定该路径,然后对其进行更新。
类似的东西:
db.collection("Users")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
document.getReference().update("isPlaying", false);
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
此代码大部分是从文档中复制/粘贴的,因此我建议在此花费更多时间。
答案 2 :(得分:1)
您可以使用getDocuments()
检索集合中的所有文档,然后更新每个文档。完整的代码是:
//asynchronously retrieve all documents
ApiFuture<QuerySnapshot> future = fStore.collection("Users").get();
List<QueryDocumentSnapshot> documents = future.get().getDocuments();
for (QueryDocumentSnapshot document : documents) {
document.getReference().update("isPlaying", true);
}