我在数据库中有100个用户文档,并且我必须在所有文档中将一个字段更新为0。我们该怎么做?
答案 0 :(得分:3)
Firestore不提供类似SQL的“ update where”命令来立即更新所有内容,因此您必须:
答案 1 :(得分:0)
尝试执行以下操作
DocumentSnapshot
并获取其DocumentReference
对象,并为每个文档使用新值更新该字段 void updateNotificationCount() async {
FirebaseUser _currentUser = await FirebaseAuth.instance.currentUser();
String authid = _currentUser.uid;
var snapshots =
activityFeedRef.document(authid).collection('feedItems').snapshots();
try {
await snapshots.forEach((snapshot) async {
List<DocumentSnapshot> documents = snapshot.documents;
for (var document in documents) {
await document.reference.updateData(<String, dynamic>{
'seen': true,
});
}
});
} catch (e) {
print(e.toString());
}
}
上面的代码仅在用户单击通知托盘后立即将所有未读的通知从false更新为true
答案 2 :(得分:0)
正如 @Doug 提到的,没有直接的方法,您必须查询数据,从 DocumentReference
获取 QueryDocumentSnapshot
并在其上调用 update
。
var collection = FirebaseFirestore.instance.collection('collection');
var querySnapshots = await collection.get();
for (var doc in querySnapshots.docs) {
await doc.reference.update({
'single_field': 'newValue',
});
}