我有一个用作缓存的集合。如何在此集合中将文档数量限制为 5M。注意:可以更新的缓存项将存在于缓存中。我尝试使用上限,但无法修改保存在上限集合中的项目。
有没有办法做到这一点?(我想避免删除该项目,然后插入更新一个)
我有一个用作缓存的集合。如何在此集合中将文档数量限制为 5M。注意:可以更新的缓存项将存在于缓存中。我尝试使用上限,但无法修改保存在上限集合中的项目。
有没有办法做到这一点?(我想避免删除该项目,然后插入更新一个)
不幸的是,您在这里无能为力。如您所述,无法修改上限集合中的文档。而且,您不能在文档中指定限制,它以 MB 为单位,IIRC。
因此,您最好的选择是使用普通收集并定期执行检查收集是否溢出并清理旧文档的作业。
db.createCollection("collectionName",{capped:true,size:10000,max:1000})
此命令用于创建固定大小的集合,其中
collectionName:要设置的集合的名称 limit
capped:true(固定大小的集合)
size:集合的最大大小(以字节为单位)
max:限制为 no。文件
尽管这可能为时已晚,但在 3.x MongoDB 中,可以使用CreateCollectionOptions行中的某些内容。
这样做的Java示例代码是:
mongoClient.getDatabase(databaseName).createCollection(collectionName,
new CreateCollectionOptions().capped(true).sizeInBytes(5120).maxDocuments(100));
其中 5120 是 5MB 的字节大小,100 是您可以在集合中存储的文档数量的上限。