【问题标题】:How to write a query to group mongoDB documents and get total category details如何编写查询以对 mongoDB 文档进行分组并获取总类别详细信息
【发布时间】:2019-11-02 20:27:21
【问题描述】:
[
  {
    "EmpId": "SV1011",
    "CheckInTime": "2019-11-01T06:43:40.551Z",
    "__v": 0
  },
  {
    "EmpId": "SV1011",
    "CheckInTime": "2019-11-01T06:43:41.305Z",
    "__v": 0
  },
  {
    "EmpId": "SV1011",
    "CheckOutTime": "2019-11-01T06:43:42.487Z",
    "__v": 0
  },
  {
    "EmpId": "SV1012",
    "CheckOutTime": "2019-11-01T06:43:48.915Z",
    "__v": 0
  },
  {
    "EmpId": "SV1012",
    "CheckInTime": "2019-11-01T06:43:49.704Z",
    "__v": 0
  }
]

如何使用聚合和分组得到如下输出。

输出

[
  { "EmpId": "SV1011",
    "CheckInTime":{"2019-11-01T06:43:40.551Z",2019-11-01T06:43:41.305Z},
   "CheckOutTime":{"2019-11-01T06:43:40.551Z",2019-11-01T06:43:41.305Z}
  },
 { "EmpId": "SV1012",
    "CheckInTime":{"2019-11-01T06:43:40.551Z",2019-11-01T06:43:41.305Z},
    "CheckOutTime":{"2019-11-01T06:43:40.551Z",2019-11-01T06:43:41.305Z}
  },

]

【问题讨论】:

  • ravi 我的回答有帮助吗?请提供一些反馈。

标签: mongodb mongoose mongodb-query aggregation-framework


【解决方案1】:

您可以使用 addToSet 运算符来完成您想要的操作。

db.collection.aggregate([
  {
    $group: {
      _id: "$EmpId",
      "CheckInTime": {
        $addToSet: "$CheckInTime"
      },
      "CheckOutTime": {
        $addToSet: "$CheckOutTime"
      },

    }
  },
  {
    $project: {
      _id: 0,
      "EmpId": "$_id",
      "CheckInTime": 1,
      "CheckOutTime": 1
    }
  }
])

输出:

[
  {
    "CheckInTime": [
      "2019-11-01T06:43:41.305Z",
      "2019-11-01T06:43:40.551Z"
    ],
    "CheckOutTime": [
      "2019-11-01T06:43:42.487Z"
    ],
    "EmpId": "SV1011"
  },
  {
    "CheckInTime": [
      "2019-11-01T06:43:49.704Z"
    ],
    "CheckOutTime": [
      "2019-11-01T06:43:48.915Z"
    ],
    "EmpId": "SV1012"
  }
]

游乐场:

https://mongoplayground.net/p/88W-GTtEHGI

文档:

https://docs.mongodb.com/manual/reference/operator/update/addToSet/

【讨论】:

    猜你喜欢
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多