我有一个作为缓存使用的集合。如何限制此集合中文档数量为5M。 注意:缓存项可以在缓存中更新。 我尝试使用capped,但保存在capped集合中的项无法修改。
有没有办法做到这一点? (我想避免删除项目,然后插入更新。)
我有一个作为缓存使用的集合。如何限制此集合中文档数量为5M。 注意:缓存项可以在缓存中更新。 我尝试使用capped,但保存在capped集合中的项无法修改。
有没有办法做到这一点? (我想避免删除项目,然后插入更新。)
很不幸,你在这里无能为力。正如你所指出的,封顶集合中的文档是不能被修改的。此外,你不能在文档中指定一个限制,它是以兆字节为单位的,如果我没记错的话。
因此,你最好使用普通集合,并有一个定期的任务来检查集合是否溢出,并清理旧的文档。
db.createCollection("collectionName",{capped:true,size:10000,max:1000})
这个命令用于创建固定大小的集合,其中: collectionName:您要在其上设置限制的集合名称mongoClient.getDatabase(databaseName).createCollection(collectionName,
new CreateCollectionOptions().capped(true).sizeInBytes(5120).maxDocuments(100));
其中5120是5MB的字节大小,100是您可以在集合中存储的文档数量的上限。
当 MongoDB 达到限制时,我成功地删除了集合中的文档。
为此,我创建了一个 Node.js 进程来完成这项工作。
希望这能帮到你们,这是我的第一个 Git 仓库。