有没有一种方法可以在mongodb中同时按两个字段排序? 所以我们可以说,我们有集合中的下列文件:Mongodb按两个字段排序
{ id: 'name1', last_1: 5, last_2: 2 },
{ id: 'name2', last_1: 1, last_2: 9 },
{ id: 'name3', last_1: 4, last_2: 3 }
我希望它降序排列,检查既last_1和last_2进行排序,那么结果将是: 书2(在last_2 9) document1(last_1中的5),document3(last_1中的4)。我还需要知道结果中的哪个字段。 我现在的聚集是这样的:
{ $group:
{ _id: { id: '$name' },
last_1: { $last: '$field1' },
last_2: { $last: '$field2' },
}
},
{ $sort : { /* don't know what to put in here */ } },
{ $limit: some_limit }
UPD:我可能会不惜一切删除排序/限制,并使用一些自定义节点功能,因为它看起来像我不能只用它实现mongo,尤其是因为如果两个字段的字段都比其他文档中的字段大,那么额外的要求是将同一个文档列出两次。
如果没有您自己的输入,在这种情况下应优先选择哪个字段几乎是不可能的。因此,目前唯一的方法是通过聚合框架为单个排序字段分配权重到这些字段。 – Sammaye 2014-11-22 18:53:04
它们都不应该优先考虑,在小组阶段之后,我再说一次,比如5个文档,最后一个值是两个字段我希望mongo在排序后根据前5个值对所有10个值(5个文档* 2个最后的值)进行排序并排列这些文档。 – 2014-11-22 19:15:06
好吧,在你的例子中,doc 2应该以last_2为优先,因为那是9,而doc1应该以last_1为优先,因为那是5,还是我误会了? – Sammaye 2014-11-22 21:23:37