我们可以更改 Cloud Firestore 中集合的名称吗?我创建了一个包含 200 个文档的集合。现在我想更改集合的名称。在 Firebase 控制台中,我找不到执行此操作的方法。
是否可以通过代码或在控制台中更改集合的名称。或者是否可以从 Firestore 导出文档,创建新集合,然后再次导入这些文档?
请帮忙。
名称、ID、馆藏或文档一旦存在就无法更改。 所有这些数据都是不可变的,以便构建有效的索引。
您当然可以读出所有内容,然后使用新名称和 ID 将其全部放回。
您可以加载它,然后使用新名称重新上传
await FirebaseFirestore.instance
.collection(oldCollectionName)
.get()
.then((QuerySnapshot snapShot) async {
snapShot.docs.forEach((element) async {
await FirebaseFirestore.instance
.collection(newCollectionName)
.doc(element.id)
.set(element.data()as Map<String, dynamic>);
});
});
注意:上面的代码是为 flutter 编写的,但只需稍加修改就可以帮助任何人。
测试后更新: 这不会移动任何子集合
您可以尝试Firefoo它允许您更改重命名、复制、导出等,但它不是免费的
这是一段用 JavaScript 编写的代码。 请考虑子集合不会被移动,并且以前的集合不会被销毁。
const db = admin.firestore();
const oldCollRef = db.collection('oldCollectionName');
const oldCollSnap = await oldCollRef.get();
let arrayPromise = [];
oldCollSnap.forEach(async doc => {
arrayPromise.push(new Promise(async (resolve, reject) => {
resolve(await db.collection('newCollectionName').doc(doc.id).set(doc.data()));
}));
})
Promise.allSettled(arrayPromise)