我是Firestore的新手,所以我可能会缺少一些东西。我想实现的目标是,
我有这个:tableName / documentID / history-array
在此 history-array 中,许多日志是使用Array Union从android应用存储的。现在,我希望此历史记录数组仅保留最后的 100 或 N 个条目。因此,如果有新条目出现,最早的数据将被删除。
在Firestore中有可能吗?如果没有,有什么办法可以使用日常任务/工作/功能吗?
我这样做是因为我想保持文档的大小限制。
答案 0 :(得分:2)
如果您有大量且不断增长的数据集,那么使用数组类型字段并不是真正的最佳存储方法。对于该集合中的每个项目,最好在该子集合中使用带有新文档的子集合。这样将更易于查询和修改。
但是,如果您绝对必须使用数组,则Firestore不会提供任何方式以您描述的方式来管理数组的内容。为了更改数组的内容(没有arrayUnion或arrayRemove),您将必须编写一些代码来读取文档,迭代列表字段值,将其更改为所需的内存,然后将数组更新为文档。
答案 1 :(得分:0)
您可以使云功能由fs上的新数据触发。创建一个读取以前的历史记录数组的事务。验证此数组的大小,如果它大于100,请执行array.shift()和array.push(newData)。我认为与阅读馆藏的所有物品相比,它便宜。