有沒有一種方法可以在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