mongoDB

Sep 22, 2021 - mongoDB 객체로 구성된 배열 쿼리 방법

jongviet 2021. 9. 22. 16:04

*9월22일

-특정한 서비스에 대한 일일 신청수/취소수/신청금액/취소금액을 데이터화 하는 테스크를 맡았다. mongoDB noSQL구조로 작성하였고, 특정한 객체 내에 date, category, data(객체로 구성된 배열)로 하나의 document가 형성되는 구조이다. 자료 예시 및 활용법은 하기와 같다.

 

-데이터 저장 구조

[
  {
    date: ISODate("2021-09-10T12:00:00+09:00"),
    Category: "usedCar",
    Data: [
      {
        name: "bmw",
        theNumberOfSold: 15
      },
      {
        name: "Honda",
        theNumberOfSold: 35
      },
      {
        name: "Toyota",
        theNumberOfSold: 100
      }
    ]
  },
  {
    date: ISODate("2021-09-11T12:00:00+09:00"),
    Category: "newCar",
    Data: [
      {
        name: "bmw",
        theNumberOfSold: 5
      },
      {
        name: "Honda",
        theNumberOfSold: 8
      },
      {
        name: "Toyota",
        theNumberOfSold: 150
      }
    ]
  }
]

 

-쿼리 구조

db.collection.aggregate([
  {
    $unwind: "$data"
  },
  {
    $group: {
      _id: {
        year: {
          "$year": "$date"
        },
        month: {
          "$month": "$date"
        },
        day : {
            "$dayOfMonth" : "$date"
        },
        name: "$data.name"
      },
      Asia: {
        $sum: "$data.theNumberOfSold"
      }
    }
  }
])

https://mongoplayground.net/