Mongodb 有没有办法限制特定集合中的记录数

Mongodb 有没有办法限制特定集合中的记录数,mongodb,Mongodb,假设我插入以下记录(例如,foo1、foo2、foo3、foo4、…foo10) 我希望集合在任何时间点仅保留5条记录(例如,它可以是foo1,…foo5或foo2,…foo6或foo6,…foo10) 我应该如何做到这一点?听起来你在寻找一个: 封顶集合是固定大小的集合… […] 一旦空间得到充分利用,新添加的对象将替换集合中最旧的对象 您可以使用类似于的命令来实现这一点 db.createCollection("collectionName",{capped:true,size:10000

假设我插入以下记录(例如,foo1、foo2、foo3、foo4、…foo10) 我希望集合在任何时间点仅保留5条记录(例如,它可以是foo1,…foo5或foo2,…foo6或foo6,…foo10)


我应该如何做到这一点?

听起来你在寻找一个:

封顶集合是固定大小的集合…
[…]
一旦空间得到充分利用,新添加的对象将替换集合中最旧的对象


您可以使用类似于的命令来实现这一点

db.createCollection("collectionName",{capped:true,size:10000,max:5})
其中10000是以字节为单位的大小,5是在集合中限制的最大文档数。

使用
db.createCollection(“collectionName”,{capped:true,size:10000,max:1000})


命令,可以限制集合中的记录数

封顶集合听起来不错,但它限制了删除操作。 在封顶集合中,只能插入新元素,当达到一定大小时,旧元素将自动删除

但是,如果您希望以任何顺序插入和删除任何文档,并限制集合中文档的最大数量,mongoDB不提供直接的解决方案

当我遇到这个问题时,我会在另一个集合中使用一个额外的count变量。 此集合具有一个验证规则,可避免计数变量变为负值。 计数变量应始终为非负整数

“计数”:{ “$gte”:0 }

算法简单。 将计数减少一。 如果成功,请插入文档。 如果它失败了,就意味着没有空间了

反之亦然

您还可以使用事务来防止失败(计数减少,但服务在插入操作之前失败)