是否可以将文档从Firestore数据库中的一个集合移动到另一个集合?这样做的原因是,当有人删除订单时,我希望将其移动到deleted_order
的集合中,而不是删除整个文档以保留历史记录。我想从我在Kotlin
中开发的应用程序中做到这一点。
将文档从一个集合移动到另一个集合的唯一方法是使用以下顺序,模仿"剪切"&paste":
- 在目标集合中创建源文档的副本,即从源集合中读取它,获取文档字段并在目标集合中使用这些字段创建新文档,然后;
- 从源集合中删除文档。
换句话说,不存在任何"元数据"。附加到一个文档,该文档定义了它的父集合,您可以在一个简单的操作中更改它。
另一种方法是将所有order
文档放在一个唯一的集合和一个保存订单状态的字段中,例如active
或deleted
。然后,更改订单状态只是更新一个字段的问题。
private void insertAllFromOneCollectionIntoAnother(CollectionReference crFrom, CollectionReference crTo) {
QuerySnapshot querySnapshot = crFrom.GetSnapshotAsync().Result;
foreach (DocumentSnapshot documentSnapshot in querySnapshot.Documents) {
crTo.Document(documentSnapshot.Id.ToString())
.SetAsync(documentSnapshot.ToDictionary());
}
}