有没有一种基于 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
首先匹配。
有没有办法做到这一点?
抱歉,如果这是一个已经提出的问题,但我似乎无法找到任何解决方案。