如何使用节点 js 对 mongoDB 中的集合内的数组进行排序

Posted

技术标签:

【中文标题】如何使用节点 js 对 mongoDB 中的集合内的数组进行排序【英文标题】:how to sort array inside collection in mongoDB using node js 【发布时间】:2020-06-29 10:47:32 【问题描述】:

我有一个查询集合,存储在记录中的数据如下所示。我想根据数组中的 id 或日期按降序排序

[
    
        "_id": "5e71fa3ab004192b349e4a06",
        "QUERIES": [
            
                "_id": "5e71fa3ab004192b349e4a07",
                "QUERY": "1",
                "USER_ID": "5e6f1c5b8451307f782d0994",
                "USER_NAME": "a2",
                "createdAt": "2020-03-18T10:38:50.247Z"
            ,
            
                "_id": "5e71fa46b004192b349e4a08",
                "QUERY": "2",
                "USER_ID": "5e6f1c5b8451307f782d0994",
                "USER_NAME": "a1",
                "createdAt": "2020-03-18T10:39:02.451Z"
            
        ],
        "TICKET_ID": "5e70f4fa47df9479502f7937"
]

预期输出

[
        
            "_id": "5e71fa3ab004192b349e4a06",
            "QUERIES": [

                
                    "_id": "5e71fa46b004192b349e4a08",
                    "QUERY": "2",
                    "USER_ID": "5e6f1c5b8451307f782d0994",
                    "USER_NAME": "a1",
                    "createdAt": "2020-03-18T10:39:02.451Z"
                ,
                
                    "_id": "5e71fa3ab004192b349e4a07",
                    "QUERY": "1",
                    "USER_ID": "5e6f1c5b8451307f782d0994",
                    "USER_NAME": "a2",
                    "createdAt": "2020-03-18T10:38:50.247Z"
                
            ],
            "TICKET_ID": "5e70f4fa47df9479502f7937"
    ]

【问题讨论】:

你是直接使用MongoDB还是Mongoose之类的? 见这里:***.com/questions/54366459/…。这就是你想要的吗? 使用 mongoose 处理 MongoDB 操作 我给你指出的问题是你想要什么? 我想要获取预期输出的 mongoDB 查询代码,问题中已经提到了 【参考方案1】:

使用这个:

db.collection.aggregate([
    $unwind: "$QUERIES" ,
    $sort:  "QUERIES.createdAt": -1  ,
   
      $group: 
         _id:  _id: "$_id", TICKET_ID: "$TICKET_ID" ,
         QUERIES:  $push: "$QUERIES" 
      
   ,
    $replaceRoot:  newRoot:  $mergeObjects: ["$$ROOT", "$_id"]   
])

Mongo playground

【讨论】:

谢谢@Wernfried Domscheit

以上是关于如何使用节点 js 对 mongoDB 中的集合内的数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何在节点js中将变量名作为mongodb的集合名称传递

更新 MongoDB 节点 Js 中的整个集合

如何从 mongodb 获取数据并使用节点 js 将其显示在表中?

如何在节点 js 和 mongodb 中使用填充的字段键值名称进行搜索?

如何在 MongoDB 中按日期对集合进行排序?

如何在 mongodb javascript 中对数据库数据进行排序? (节点.js)