Node.js 如何根据mongoose聚合中的状态对数据进行排序
我收集了许多佣金记录Node.js 如何根据mongoose聚合中的状态对数据进行排序,node.js,mongodb,mongoose,aggregation-framework,Node.js,Mongodb,Mongoose,Aggregation Framework,我收集了许多佣金记录 { "_id": "5f2b96508082a30d27581cf7", "createdAt": "2020-08-06T05:34:08.281Z", "supplierName": "John Cena", "status": "Created", "co
{
"_id": "5f2b96508082a30d27581cf7",
"createdAt": "2020-08-06T05:34:08.281Z",
"supplierName": "John Cena",
"status": "Created",
"commissionID": "5f2b96508082a30d27581cf6"
},
{
"_id": "5f2b996d8082a30d27581cf9",
"createdAt": "2020-08-05T05:34:08.281Z",
"supplierName": "John Cena",
"status": "Pending",
"commissionID": "5f2b96508082a30d27581cf6"
},
{
"_id": "5f2ba2e28082a30d27581cfe",
"createdAt": "2020-08-05T05:34:08.281Z",
"supplierName": "John Cena",
"status": "Accepted",
"commissionID": "5f2b96508082a30d27581cf6"
},
{
"_id": "5f2ba2ea8082a30d27581cff",
"createdAt": "2020-08-04T05:34:08.281Z",
"supplierName": "John Cena",
"status": "Pending",
"commissionID": "5f2b96508082a30d27581cf6"
},
{
"_id": "5f2ba2ea8082a30d27581cff",
"createdAt": "2020-08-03T03:34:08.281Z",
"supplierName": "John Cena",
"status": "Rejected",
"commissionID": "5f2b96508082a30d27581cf6"
}
我需要按挂起状态和createdAt在desc中进行排序(我指的是顶部所有挂起记录的createdAt Date desc顺序)
状态=已创建、挂起、已接受、已拒绝
应该是这样的
{
"_id": "5f2b996d8082a30d27581cf9",
"createdAt": "2020-08-05T05:34:08.281Z",
"supplierName": "John Cena",
"status": "Pending",
"commissionID": "5f2b96508082a30d27581cf6"
},
{
"_id": "5f2ba2ea8082a30d27581cff",
"createdAt": "2020-08-04T05:34:08.281Z",
"supplierName": "John Cena",
"status": "Pending",
"commissionID": "5f2b96508082a30d27581cf6"
},
{
"_id": "5f2b96508082a30d27581cf7",
"createdAt": "2020-08-06T05:34:08.281Z",
"supplierName": "John Cena",
"status": "Created",
"commissionID": "5f2b96508082a30d27581cf6"
},
{
"_id": "5f2ba2e28082a30d27581cfe",
"createdAt": "2020-08-05T05:34:08.281Z",
"supplierName": "John Cena",
"status": "Accepted",
"commissionID": "5f2b96508082a30d27581cf6"
},
{
"_id": "5f2ba2ea8082a30d27581cff",
"createdAt": "2020-08-03T05:34:08.281Z",
"supplierName": "John Cena",
"status": "Rejected",
"commissionID": "5f2b96508082a30d27581cf6"
}
我正在使用mongodb 3.4、mongoose和node.js。
请帮帮我。您可以通过定制订单来完成
非常感谢你,吉布斯
db.collection.aggregate([
{
$addFields: {
sortId: {
$cond: [
{
$eq: [ //If pending
"$status",
"Pending"
]
},
0, //then 0
{
$cond: [
{ //Else if created
$eq: [
"$status",
"Created"
]
},
1, //then 1
2 //Else 2
]
}
]
}
}
},
{
$sort: {
sortId: 1
}
}
])