[과제] MongoDB _02

💜 문제 💜

새롭게 인벤토리 콜렉션을 추가하자.

[
   { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" },
   { "item": "notebook", "qty": 50, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "A" },
   { "item": "paper", "qty": 100, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "D" },
   { "item": "planner", "qty": 75, "size": { "h": 22.85, "w": 30, "uom": "cm" }, "status": "D" },
   { "item": "postcard", "qty": 45, "size": { "h": 10, "w": 15.25, "uom": "cm" }, "status": "A" }
]

이 콜렉션에서

status 필드값이 "A"이고 qty 필드값이 50보다 작은 모든 도큐먼트를 검색한 다음, size 필드의 h 프로퍼티 값을 "big" 이라는 문자열로 변경해보자!


위 문제의 조건은 다음과 같다.

(여기서도 updateMany 메서드를 사용해야 한다.)

  1. status 필드값이 "A"이고 qty 필드값이 50보다 작은 모든 도큐먼트를 검색한다.

  2. size 필드의 h 프로퍼티 값을 "big"이라는 문자열로 변경한다.

일단 첫번째 조건부터 충족시키기로 했다.

find()를 써보기로 했다. 일단 status 필드값이 "A"이며 동시에 qty 값이 50 아래인 도큐먼트들을 찾았다.

 db.inventory.find( {status: "A", qty: { $lt: 50 } })

결과화면

굿.

이제 이 도큐먼트들을 바꿔야한다.

저번에 썼던 updateMany 를 기억하는가?

 db.inventory.updateMany(
...    { },
...    [
...       { $set: { status: ["$size.w","$size.h"]}},
...    ]
... )

2번째 줄 중괄호{} 속에는 원래 검색하려는 쿼리 조건이 들어가야한다.

cmd에 다음과 같이 입력했다.

db.inventory.updateMany(
... {status: "A", qty: { $lt: 50 }},
... [
... {$set : {"size.h":"big"}},
... ]
... )

프로퍼티 인자에 접근하려면 위와 같이 점(.)으로 선택하면 된다. 반드시 "size.h" 처럼 큰 따옴표로 감싸줘야 한다.

성공적으로 변경된 것을 확인할 수 있다.

좋은 웹페이지 즐겨찾기