我有一个管道,类似这样:
db.entrycodes.aggregate(
{
'$match' : {
usedAt:{
$exists: true
}
}
},
{
$project: {
usedAt: true,
dayOfMonth: {
'$dayOfMonth': '$usedAt'
},
month: {
'$month': '$usedAt'
},
year: {
'$year': '$usedAt'
}
}
},
{
$group: {
_id: {
dayOfMonth: '$dayOfMonth',
month: '$month',
year: '$year'
},
count: {
$sum: 1
}
}
},
{
$sort: {
year:1,
month:1,
dayOfMonth: 1
}
}
)
最后一个运算符$对年月和dayOnMonth字段进行排序。问题是每次都会对数据进行反向排序。如果我像这样重写查询的最后一部分:
{
$sort: {
year: -1,
month: -1,
dayOfMonth: -1
}
}
数据保持反向排序,这似乎与documentation相反。
这是Mongo中的一个错误,还是我错过了一些明显的错误?
mongod版本:2.6.9
答案 0 :(得分:1)
您的$sort
阶段错误,您需要使用所谓的dot notation
{
$sort: {
"_id.year" : -1,
"_id.month" : -1,
"_id.dayOfMonth": -1
}
}