限制Mongodb集合文档中的数组大小

时间:2019-01-02 05:11:39

标签: mongodb

我有一个这样的文件

{
"_id":"deviceId",
"scannedTags":[{tagId:"tagid", "someOtherDetail":"someOtherDetail"}]
}

我需要将scannedTags数组的大小限制为20。

我的情况与SO Question的情况略有不同。我的数组总长度不应超过20。在推入20个元素(不是一次射击,可能在多种情况下)之后,第21个元素应覆盖数组中的第一个元素。

当前,我正在检索数组,并使用javascript的unshift在第一个索引处插入元素,然后使用array.lenght = 20来查找长度(如果大于20)。然后,我在MongoDB中更新集合中的文档。

此过程涉及很多IO。

另一种方法可能是使用上限集合,将集合大小设置为20并保留deviceid作为集合名称:不利的是设备数量过多,这将增加db中的集合数量。 即使我妥协了集合的数量,从这些集合中获取数据的查询也会使性能变得不友好。

是否可以通过一次推送来确保文档中仅存在最近的20条记录?

0 个答案:

没有答案