Mongo $sort 的倒序无法倒序
Reversing order of Mongo $sort fails to reverse the order
我有一个管道,像这样:
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
}
}
)
最后一个运算符 $sorts 在年月和 dayOnMonth 字段上。问题是数据每次都是反向排序的。如果我像这样重写查询的最后一部分:
{
$sort: {
year: -1,
month: -1,
dayOfMonth: -1
}
}
数据保持反向排序,这似乎与documentation相反。
这是 Mongo 中的错误,还是我遗漏了一些明显的东西?
mongod版本:2.6.9
你的$sort
阶段是错误的你需要使用所谓的dot notation
{
$sort: {
"_id.year" : -1,
"_id.month" : -1,
"_id.dayOfMonth": -1
}
}
我有一个管道,像这样:
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
}
}
)
最后一个运算符 $sorts 在年月和 dayOnMonth 字段上。问题是数据每次都是反向排序的。如果我像这样重写查询的最后一部分:
{
$sort: {
year: -1,
month: -1,
dayOfMonth: -1
}
}
数据保持反向排序,这似乎与documentation相反。
这是 Mongo 中的错误,还是我遗漏了一些明显的东西?
mongod版本:2.6.9
你的$sort
阶段是错误的你需要使用所谓的dot notation
{
$sort: {
"_id.year" : -1,
"_id.month" : -1,
"_id.dayOfMonth": -1
}
}