2014-12-04 101 views
0

我有一個項目,我正在處理這將需要我存儲大量的對象鏈接到一個父對象的數組,類似於存儲社交媒體評論到他們原來的職位。對於我組織數據的一系列子文檔/評論,最好的辦法是什麼?在Mongo中組織子文檔的最佳方式是什麼?

是否認爲最好的做法是讓子對象在不同的​​集合中引用父對象,或者將它們全部直接放在父對象中是否更理想?

回答

0

我在這裏討論這一點,讀這第一: https://stackoverflow.com/a/27285313/68567

對於你的情況,選擇3(保持一些數據在主模型)可能是最好的。關鍵是要避免無限陣列增長

這與Mongodb如何分配文檔有關。 http://docs.mongodb.org/manual/core/storage/ 「MongoDB中的每個文檔都存儲在一個記錄中,該記錄包含文檔本身以及額外的空間或填充,這使得文檔可以隨更新而增長。」

當節點分配新文檔時,它會根據插入文檔的大小和文檔已存在的大小來分配空間。 (請閱讀上面的鏈接。)如果您的某些文檔的數量級比其他文檔大一些,這可能會導致碎片化。

避免在'comments'子文檔數組中使用太多文檔的方法是使用$ push和$ slice命令。 http://docs.mongodb.org/manual/reference/operator/update/slice/

因此,存儲'最近的5',並顯示項目第一次加載時的情況。 (或者最老的,或者其他任何你想要使用的排序標準。)然後爲用戶提供一種加載更多的方法,這將對具有它們的集合進行單獨的往返。

相關問題