在mongodb中限制集合中文档的数量

3

我有一个作为缓存使用的集合。如何限制此集合中文档数量为5M。 注意:缓存项可以在缓存中更新。 我尝试使用capped,但保存在capped集合中的项无法修改。

有没有办法做到这一点? (我想避免删除项目,然后插入更新。)

4个回答

2

很不幸,你在这里无能为力。正如你所指出的,封顶集合中的文档是不能被修改的。此外,你不能在文档中指定一个限制,它是以兆字节为单位的,如果我没记错的话。

因此,你最好使用普通集合,并有一个定期的任务来检查集合是否溢出,并清理旧的文档。


1

db.createCollection("collectionName",{capped:true,size:10000,max:1000})

这个命令用于创建固定大小的集合,其中: collectionName:您要在其上设置限制的集合名称
capped: true(固定大小的集合)
size:集合的最大字节大小
max:文档数量的限制


0
尽管可能有点晚了,但在3.x MongoDB中,可以使用类似于CreateCollectionOptions的东西来实现这一点。
一个用Java编写的示例代码如下:
mongoClient.getDatabase(databaseName).createCollection(collectionName, 
    new CreateCollectionOptions().capped(true).sizeInBytes(5120).maxDocuments(100));

其中5120是5MB的字节大小,100是您可以在集合中存储的文档数量的上限。


0

当 MongoDB 达到限制时,我成功地删除了集合中的文档。

为此,我创建了一个 Node.js 进程来完成这项工作。

在我的 GitHub 页面上有详细记录

希望这能帮到你们,这是我的第一个 Git 仓库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接