此Meteor服务器代码尝试对文档进行分组并按属性“句点”升序对其进行排序,但它没有这样做,任何想法如何修复它? thx
let invoicePopulation = UsageCol.aggregate([
{
$match: {
action: {$in: ['a', 'b', 'c']},
userId: doc.userId
}
},
{
$group: {
_id: {period: "$period"},
count: {$sum: 1}
}
},
{
"$sort" : {
"period" : 1
}
}
]);
//output
[{"_id":{"period":"42017"},"count":14},{"_id":{"period":"22017"},"count":1},{"_id":{"period":"32017"},"count":271}]
//needs to be
[{"_id":{"period":"22017"},"count":1},{"_id":{"period":"32017"},"count":271},{"_id":{"period":"42017"},"count":14}]
答案 0 :(得分:1)
你的$group
看起来很奇怪。通常,您希望对特定字段进行分组,该字段将成为您的_id
(因为该字段现在是唯一的)。
您在代码中拥有它的方式是将子文档设置为_id
的值。如果这真的是你想要的,那么你的$sort
应该是这个。
{
$sort: {
"_id.period": 1
}
}
如果您不想创建_id
子文档,那么您应该像这样修复$group
。
let invoicePopulation = UsageCol.aggregate([
{
$match: {
action: {$in: ['a', 'b', 'c']},
userId: doc.userId
}
},
{
$group: {
_id: "$period",
count: {$sum: 1}
}
},
{
$sort : {
"period" : 1
}
}
]);