2012-11-18 87 views
3

我使用的是可放大的mongodb加蓋集合。我想將它的大小設置爲最大值,因爲我不想根據FIFO規則真正刪除最舊的記錄。MongoDB Capped Collection最大允許尺寸

我希望數據儘可能長時間保持封蓋的集合的特徵。

謝謝

+0

如果您不希望在達到最大尺寸時移除最舊的文檔,您要刪除哪些文檔? – JohnnyHK

+0

理想情況下沒有刪除.....我將插入數據庫只有一段時間。這就是爲什麼我想知道最大尺寸,以確保沒有文件被刪除。 – user94628

+2

只要你明白從封頂集合中刪除任何東西的唯一方法,如果它沒有達到TTL超時或大小上限,就是用'emptycapped'刪除整個集合。您無法刪除單個文檔。 – platforms

回答

6

您可以使封頂的集合儘可能大;只需將size參數create_collection設置爲一個足夠大的值以便不會用盡空間。

像這樣:

db.create_collection('captest', capped=True, size=20000000000) 
+0

謝謝你的答案。 – user94628

+0

你也可以像這樣創建一個加蓋的集合:db.createCollection(「mycoll」,{capped:true,size:100000}) – user94628

1

您使用的大小(以字節爲單位)可以創建加蓋收集,或最大(文件最大數量保持),或兩者在這種情況下:

pymongo - >

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

蒙戈殼 - >

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

查看更多here上限集合。

+0

似乎max屬性不會影響集合。我正在使用服務器版本3.2。在收集後的stats()後,最大值保持爲NumberLong(「6223372036 ...」) – Yarimi

+0

如果您有現有集合,我相信您必須將其轉換爲上限。在此處查看更多信息:https://docs.mongodb.com/manual/core/capped-collections/ – radtek