在Mongoose中,可以使用$cond
和$sort
操作符来对聚合进行排序和条件筛选。下面是一个示例代码,展示如何按照条件对聚合结果进行排序:
const mongoose = require('mongoose');
// 创建Schema
const userSchema = new mongoose.Schema({
name: String,
age: Number,
});
// 创建Model
const User = mongoose.model('User', userSchema);
// 聚合操作
User.aggregate([
// 匹配条件
{
$match: {
age: {
$gte: 18, // 年龄大于等于18岁的用户
},
},
},
// 条件判断和排序
{
$project: {
name: 1,
age: 1,
isAdult: {
$cond: {
if: { $gte: ['$age', 20] }, // 如果年龄大于等于20岁
then: true,
else: false,
},
},
},
},
// 排序
{
$sort: {
age: -1, // 按年龄逆序排序
},
},
], (err, result) => {
if (err) {
console.error(err);
} else {
console.log(result);
}
});
在这个示例中,我们首先使用$match
操作符对用户进行筛选,只保留年龄大于等于18岁的用户。然后使用$project
操作符创建一个新的字段isAdult
,根据年龄是否大于等于20岁进行条件判断,如果满足条件则值为true
,否则为false
。最后使用$sort
操作符按照年龄逆序排序。
请注意,以上示例代码假设你已经连接了一个MongoDB数据库,并且已经定义了一个名为User
的模型。如果你还没有,需要根据自己的数据库和模型定义进行相应的调整。