如何将firestore文档从一个集合移动到另一个集合



是否可以将文档从Firestore数据库中的一个集合移动到另一个集合?这样做的原因是,当有人删除订单时,我希望将其移动到deleted_order的集合中,而不是删除整个文档以保留历史记录。我想从我在Kotlin中开发的应用程序中做到这一点。

将文档从一个集合移动到另一个集合的唯一方法是使用以下顺序,模仿"剪切"&paste":

  1. 在目标集合中创建源文档的副本,即从源集合中读取它,获取文档字段并在目标集合中使用这些字段创建新文档,然后;
  2. 从源集合中删除文档。

换句话说,不存在任何"元数据"。附加到一个文档,该文档定义了它的父集合,您可以在一个简单的操作中更改它。


另一种方法是将所有order文档放在一个唯一的集合和一个保存订单状态的字段中,例如activedeleted。然后,更改订单状态只是更新一个字段的问题。

请注意,这种方法不会对查询性能产生任何负面影响,因为Firestore查询性能与结果集的大小成正比。,而不是数据集大小。
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());
}
}

相关内容

最新更新