【问题标题】:how to sort array inside collection in mongoDB using node js如何使用节点 js 对 mongoDB 中的集合内的数组进行排序
【发布时间】: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之类的?
  • 见这里:stackoverflow.com/questions/54366459/…。这就是你想要的吗?
  • 使用 mongoose 处理 MongoDB 操作
  • 我给你指出的问题是你想要什么?
  • 我想要获取预期输出的 mongoDB 查询代码,问题中已经提到了

标签: node.js angular mongodb mongoose mean-stack


【解决方案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
猜你喜欢
  • 2020-06-29
  • 2020-04-16
  • 2017-11-01
  • 2021-02-13
  • 2012-11-07
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多