我希望实现一个具有固定长度的基于时间的队列,其中旧项目从后面弹出。
例如,我有一个限制为10个项目的评论列表,第11个项目进入,最老的项目从后面掉落。
如果Mongoose不支持,有人可以告诉我一些我可以使用的技巧吗? (前/等)
非常感谢
答案 0 :(得分:3)
MongoDB引入了capped arrays(来自v2.4),可用于限制数组中的元素数量。
你可以看一些例子 limit number of elements
答案 1 :(得分:1)
根据Mongoose Wiki - 它现在支持MongoDB的上限数组:
Mongoose 3.6支持这些新的MongoDB 2.4数组运算符。
Model.update(matcher,{$ push:{docs:{$ each:[{x:1},{x:23}, {x:5}],$ slice:-2,$ sort:{x:1}}}})
答案 2 :(得分:0)
db.myCollection.update({"arrayField.10": {$exists: true}}, {$pop: {"arrayField": 1}})
“a.10”键检查“arrayField”中是否存在元素10,这意味着数组大小等于或大于10.如果是,则以原子方式从数组后面弹出1个元素。 / p>
可能不是您案件的最佳解决方案,但希望这可能会让您朝着正确的方向前进。