2015-04-07 35 views
0

我有一堆數據需要輸入到mongo集合中。在較高的層次上,目標是將每個元素都放入父文檔中,並定期更新數據庫(這是一個長時間運行的過程,我希望在腳本錯誤的情況下創建保存點)。下面是僞代碼:Mongo - 手動(重新)設置填充因子

for element in dataset : 
    { 
     "akey" : adoc 
     ... 
    }[element["key"]]["elements"].append(element) 

    if(periodically()) 
     print(status()) 
     db.sums.update({"name":"akey"},adoc) 
     ... 

當我運行db.sums.stats()我paddingFactor接近4.0,因爲蒙戈認爲我的文檔有越來越多的習慣。這很不幸,因爲我只會從這裏開始添加大量但靜態的文檔。我現在可以運行精簡版,但這不會改變集合的填充因子。我可以等待填充因子收斂到1,但是我必須記得稍後再運行compact。那麼現在有什麼辦法可以(重新)設置填充因子嗎?

回答

0

您可以指定一個可選的paddingFactor到MongoDB中2.2+與compact()使用:

paddingFactor:可選。僅適用於MMAPv1存儲引擎。指定在緊湊操作期間使用的填充(作爲文檔大小的一個因子)。在緊湊完成之後,paddingFactor不會影響後續記錄分配的填充。

+0

我解決了我的問題 - 我要求如何更改後續記錄分配的paddingFactor。 – xavier

+0

@xavier你建議paddingFactor不會隨着compact()(它會)而改變。但是,如果您正在尋找顯式設置paddingFactor,則不存在該方法。不要認爲優點是downvote ;-) – Stennie

+0

但這是我的問題的標題。如果你編輯你的答案來表明它是不可能的(也許從設計的角度來描述爲什麼),我會不打倒你。 – xavier