2011-09-22 66 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实现了父代集合的排序!