Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何根据mongoose聚合中的状态对数据进行排序_Node.js_Mongodb_Mongoose_Aggregation Framework - Fatal编程技术网

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
    }
  }
])