首页 > 解决方案 > 如何按月获取交易数量?

问题描述

我想从数据库中生成融洽的关系。有一个存储订单的数据库。每条记录如下所示:

{
  "_id": {
    "$oid": "5ec7916eff6e89814722n4y8"
  },
  "detais": [
    {
      "name": "Hood",
      "quantity": 2 
    },
    {
      "name": "Tire",
      "quantity": 4
    },
    {
      "name": "Door",
      "quantity": 4
    },
    {
      "name": "Headlights",
      "quantity": 3
    }
  ],
  "date": {
    "$date": "2004-09-29T10:37:45Z"
  },
  "_class": "com.carShop.Order"
}

我需要了解每个细节,按月获取他们的数量,如下所示:

  [
             {
            "date": "2004-09",
             "detais": [
                     {
                       "name": "Hood",
                       "quantity": 12 
                     },
                     {
                       "name": "Tire",
                       "quantity": 43
                     },
                     ...
                      ]
             },
         {
             "date": "2004-10",
             "detais": [
                     {
                       "name": "Hood",
                       "quantity": 2 
                     },
                     {
                       "name": "Tire",
                       "quantity": 15
                     },
                     ...
                      ]
             },
         ....
         ]

任何帮助表示赞赏。

标签: mongodb

解决方案


试试这个:

db.collection.aggregate([
  {
    $group: {
      _id: { y: { $year: "$date" }, m: { $month: "$date" } },
      detais: { $push: "$detais" }
    }
  },
  {
    $set: {
      date: {
        $dateFromParts: {
          "year": "$_id.y",
          "month": "$_id.m",
          "day": 1
        }
      }
    }
  }
])

蒙戈游乐场


推荐阅读