gpt4 book ai didi

node.js - 通过聚合对嵌套列进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:54 24 4
gpt4 key购买 nike

我在 Mongoose 中使用聚合框架进行以下查询:

Comment.aggregate([{
$match: {
isActive: true
}
}, {
$group: {
_id: {
year: {
$year: "$creationDate"
},
month: {
$month: "$creationDate"
},
day: {
$dayOfMonth: "$creationDate"
}
},
comments: {
$push: {
comment: "$comment",
username: "$username",
creationDate: "$creationDate",
}
}
}
}, {
$sort: {
'comments.creationDate': -1
}
}, {
$limit: 40
}], function (err, comments) {
//...
});

最后,我想使用 comments 数组中的 creationDate 对记录进行排序。我已经使用了 comments.creationDate 但它不起作用!

使用聚合框架对项目进行排序的正确方法是什么?

最佳答案

您需要将 creationDate 上的 $sort 移至 $group 上方,以便影响使用 $push 构建 comments 数组的顺序。正如您现在所看到的,您正在对整个文档集而不是数组进行排序。

Comment.aggregate([{
$match: {
isActive: true
}
}, {
$sort: {
creationDate: -1
}
}, {
$group: {
_id: {
year: {
$year: "$creationDate"
},
month: {
$month: "$creationDate"
},
day: {
$dayOfMonth: "$creationDate"
}
},
comments: {
$push: {
comment: "$comment",
username: "$username",
creationDate: "$creationDate",
}
}
}
}, {
$limit: 40
}], function (err, comments) {
//...
});

关于node.js - 通过聚合对嵌套列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24838096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com