我希望实现一个固定长度的基于时间的队列,其中旧项目从后面弹出。
例如,我有一个限制为 10 项的评论列表,第 11 项进入,最旧的 on 落在后面。
如果猫鼬不支持,有人可以告诉我一些我可以使用的技巧吗?(前/等)
非常感谢
MongoDB 引入了上限数组(从 v2.4 开始),可用于限制数组中的元素数量。
您可以在元素数量限制处看到一些示例
db.myCollection.update({"arrayField.10": {$exists: true}}, {$pop: {"arrayField": 1}})
“a.10”键检查“arrayField”中是否存在元素 10,这意味着数组大小等于或大于 10。如果存在,则以原子方式从数组背面弹出 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 }}}})