在父集合和子集合字段上进行mongodb排序

时间:2011-09-22 06:31:58

标签: sorting mongodb parent

好的我有两个收藏集,父母和孩子。 父集合可以有多个子文档。

现在我希望能够通过它自己的字段以及它的父字段来对ChildCollection文档进行排序。这可能吗?是的,我可以把它放在一个大集合中,但这将是很多冗余。这将是数百万条记录,因此可以在服务器上做得越多越好。

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

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

2 个答案:

答案 0 :(得分:2)

要对父集合字段中的子集合进行排序,您应该将要排序的父字段放入每个子集中。没有其他方法可以做到这一点。当您更新父文档时,您将需要更新所有子项中的这些字段。 Mongodb喜欢非规范化,所以不关心这一点。另外,为了提高父字段更新的速度,您可以使子更新异步。

答案 1 :(得分:0)

有一种解决方法。

通过使用$sort,我能够对子集合进行排序。我将相同的代码返回给Java List,并使用Collections.sort(List<T>);和VOILA实现父集合的排序!