MongoDB 固定大小集合的最大允许大小

3
我正在使用一个可追加的mongodb数据集合。我想将其大小设置为最大值,以便不按照FIFO规则删除最旧的记录。我希望数据能够尽可能长时间地持久存在,并保持可追加数据集合的特性。
谢谢。

如果您不希望在达到最大大小时删除最旧的文档,那么您希望删除哪些文档呢? - JohnnyHK
理想情况下,我将仅在一定时间内将其插入到数据库中。因此,我想知道最大大小以确保不会删除任何文档。 - user94628
2
只要你明白,如果一个已经达到了大小限制或者TTL超时的集合中需要删除任何内容,唯一的方法就是使用emptycapped删除整个集合。你无法删除单独的文档。 - platforms
2个回答

7
你可以将封顶集合设得任意大;只需将create_collectionsize参数设置为足够大的值即可,以免空间不足。例如:
 db.create_collection('captest', capped=True, size=20000000000)

你也可以像这样创建一个有上限的集合:db.createCollection("mycoll", {capped:true, size:100000}) - user94628

1
您可以使用大小(以字节为单位)或最大值(要保留的文档的最大数量),或两者兼而有之来创建限制集合:

pymongo ->

self.db.create_collection('system_health_log', capped=True, size=5242880, max=5000)

mongo shell ->

db.createCollection("system_health_log", { capped : true, size : 5242880, max : 5000 } )

在有关 Capped Collections 的 这里 查看更多信息。


看起来max属性没有影响到集合。我正在使用3.2版本的服务器。在对集合执行stats()之后,max值仍然是NumberLong("6223372036..."). - Crispy Holiday
如果您已经有一个现有的集合,我认为您需要将其转换为 capped 集合。在此处了解更多信息:https://docs.mongodb.com/manual/core/capped-collections/ - radtek

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