有没有一种方法在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