我試圖將一個ObjectIds列表作爲數組字段存儲在文檔中。MongoDB如何處理大型數組字段?
我知道Mongo DB對單個文檔有4MB的大小限制。因此,考慮到ObjectId的長度是12個字節,文檔應該能夠處理一個數組字段中超過300,000個條目。 (讓我知道如果計算是關閉的)。
如果數組中的條目數量接近該限制,我可以期待什麼樣的性能?特別是當字段被索引時?任何內存問題?
典型的查詢看起來像下面:
查詢由單個值
db.myCollection.find(
{
myObjectIds: ObjectId('47cc67093475061e3d95369d')
}
);
查詢由多個值
db.myCollection.find(
{
myObjectIds: {$in: [ObjectId('47cc67093475061e3d95369d'), ...]}
}
);
添加一個新的值到多個文檔
db.myCollection.update(
{
_id: {$in: [ObjectId('56cc67093475061e3d95369d'), ...]}
},
{
$addToSet: {myObjectIds: ObjectId('69cc67093475061e3d95369d')}
}
);
供參考:在1.8中,最大文檔大小已增加到16MB,並且此限制是10gen強加的軟限制。有人對此表示最好:(釋義)這個限制已經到位,迫使我們對我們的模式設計思考更加困難。 – 2011-03-15 13:59:14
@Bryan Migliorisi謝謝,我遇到過這個帖子,並同意在模式設計上更聰明。 – Jaepil 2011-03-15 23:47:23