有沒有一種方法在MongoDB的基礎上排序$elemMatch
?例如,我有一個看起來像這樣的文件:排序在MongoDB由elemMatch
{
'user': ObjectId('fsdfsdf'),
...
'array_of_things': [
{
'attribute_1': ObjectId('sdfsdfsd'),
'attribute_2': ObjectId('sdfsfsdf'),
'value': 30000
},
{
'attribute_1': ObjectId('dfdfgfdg'),
'attribute_2': ObjectId('gdfgdfgd'),
'value': 100
},
{
'attribute_1': ObjectId('mbnmbbmb'),
'attribute_2': ObjectId('mbnmbnmb'),
'value': 2000
},
...
]
}
我需要能夠查詢基於array_of_things
領域內一個匹配的元素(這是很簡單的用$elemMatch
)這些數據。問題出現了,因爲我還需要能夠按照與某個屬性匹配的值(升序或降序)進行排序。例如,查詢可能是:
{
'user': ObjectId('fsdfsdf'),
'array_of_things': {
$elemMatch: {
'attribute_1': ObjectId('dfdfgfdg'),
'value': {
$gt: 1
}
}
}
}
單靠value
(如sort({ 'array_of_things.value': -1 })
預見的只有各種排序的所有值的任何數組元素,不匹配attribute_1
第一
有沒有辦法做到這一點?
道歉,如果這是一個已經問到的問題,但我似乎無法照看找到任何解決的辦法。
我相信你希望通過$ unwind得到這個結果,並且使用匯總框架挑選的值域上的$ sort,我認爲 – Sammaye