2011-09-22 64 views
1

好吧我有兩個集合,父母和孩子。 父集合可以有多個子文檔。父母和孩子收集字段上的mongo db排序

現在我想能夠通過它自己的字段以及它的父項的字段對ChildCollection文檔進行排序。這可能嗎?是的,我可以把它放在一個大的集合,但它會是很多的冗餘。這將是數百萬條記錄,因此可以在服務器上做得越多越好。

ParentCollection 
_id : "parentid1" 
field1 : "val1" 
field2 : "val2" 
fieldx....... 

ChildCollection 
_id : "childid1" 
_parentid: "parentid1" 
field1 : "val3" 
field2 : "val4" 
fieldx......... 

回答

2

要對父集合字段上的子集合進行排序,您應該將要在其中排序的父字段放入每個子集中。沒有其他辦法可以做到這一點。當您更新父文檔時,您需要更新所有孩子的這些字段。 Mongodb愛反規範化,所以不在乎這一點。同樣爲了提高父字段更新的速度,您可以使子更新異步。

0

有一個工作。

通過使用$sort我能夠對子集合進行排序。我將相同的代碼返回給Java List,並使用Collections.sort(List<T>);和VOILA實現了父代集合的排序!