我必须删除不同位置的多个字段。 我有数百万个“消息”,其中包含多个字段,例如:
messagesId: {
text: "...",
datetime: "...",
unusedField: "...", <-- REMOVE
...
}, ...
为节省存储空间,我想删除每条消息的旧字段和未使用的字段。这意味着,可以节省数十万美元的别名资金(我们目前支付的数百美元,因为除了Firebase保证的第一个GB外)。
问题1-数据库峰值:,以编程方式删除大量数据,将峰值设置为100%,暂时阻止了它。 为解决此问题,Firebase支持人员建议的解决方案是使用 CLI ( firebase数据库:删除路径)。 一旦我列出了数百万行:
firebase database:remove /root/messages/messageid_1/field --confirm &&
firebase database:remove /root/messages/messageid_2/field --confirm &&
...
即使考虑每行的执行时间为几毫秒,整个执行时间也可能花费不可接受的长时间(天)。
问题2-在本地删除并重新上传数据库:建议的另一种解决方案是下载整个数据库,删除json路径并重新上传。 目前,整个数据库的重量为60GB。 是否可以从Firebase控制台重新加载整个数据库? (鉴于我必须同时暂停所有写操作以避免数据丢失的事实)
还有其他可能的解决方案吗?
答案 0 :(得分:1)
常见的路径是:
删除每个节点块就像:
var nodesToRemove = ["/root/messages/messageid_1/field", "/root/messages/messageid_2/field"];
var updates = nodesToRemove.map(function(path) {
return { [path]: null };
});
firebase.database().ref().update(updates);