데이터베이스/MongoDB 연습과제 해답

Mongo DB 배열(Array) 쿼리(Query) 연습 해답

syleemomo 2022. 1. 20. 22:12
728x90

 

* 연습과제 1

해답 1 - 이름으로 검색

db.inventory.find({item:"postcard"})

해답 2 - 다수의 조건을 동시에 만족하는 배열요소를 하나 이상 포함하고 있는 도큐먼트 검색

db.inventory.find({dim_cm:{$elemMatch:{$gt:15, $lt:16}}})

해답 3 - 배열 인덱스에서 특정 조건을 만족하고 있는 쿼리 검색

db.inventory.find({"dim_cm.1":{$lt:16}}) // dim_cm 배열의 두번째 요소 값 기준
db.inventory.find({"dim_cm.0":{$lt:11}}) // dim_cm 배열의 첫번째 요소 값 기준

db.inventory.find({"tags.0": "blue"}) // tags 배열의 첫번째 요소값 기준

해답 4 - 배열의 길이가 일치하는 도큐먼트 쿼리 검색

db.inventory.find( { "tags": { $size: 1 } } )

해답 5 - 필드에서 특정 값을 포함하지 않는 쿼리 검색

db.inventory.find({ tags: { $nin: ["red"] }})

 

* 연습과제 2

해답 1 - 특정 배열요소를 포함하고 있는 도큐먼트 쿼리

db.inventory.find({tags:"plain"}) // paper에만 tags에 'plain'이 있음

해답 2 - 배열 길이가 일치하는 도큐먼트 쿼리

db.inventory.find({"tags":{$size:3}}) // paper만 tags 요소가 3개

해답 3 - 다수의 조건을 만족하는 도큐먼트 쿼리

db.inventory.find({ qty: 100, dim_cm: [14, 21]})

해답 4 - 특정 배열요소가 조건을 만족하는 도큐먼트 쿼리

 db.inventory.find({ "tags.2": "plain"})

 

* 연습과제 3

해답 1 - 인덱스로 선택한 배열요소(객체)의 필드가 특정 조건을 만족하는 도큐먼트 쿼리

db.inventory.find( { 'instock.1.warehouse': "B" } )

해답 2- 객체의 필드가 특정 조건을 만족하는 도큐먼트 검색

db.inventory.find({'instock.warehouse':{$nin:["C"]}}) // warehouse에 C가 없는 요소 검색
db.inventory.find({'instock.qty':{$gte:40}}) // qty가 40보다 크거나 같은 요소 검색

 

* 연습과제 4

해답 1 - 배열요소(객체)의 필드가 특정조건을 만족하는 도큐먼트 쿼리

db.inventory.find({'instock.0.qty':5})  // instock의 첫번째 객체의 qty가 5
db.inventory.find({'instock.warehouse':{$nin:["B"]}})  // warehouse에 "B"가 없음

해답 2 - 다수의 조건을 동시에 만족하는 배열요소를 하나 이상 포함하고 있는 도큐먼트 쿼리

db.inventory.find({"instock":{$elemMatch:{qty:5, warehouse:{$nin:["B"]}}}}) // $elemMatch 사용

instock 배열의 객체 중에서 qty 필드값이 5이고 동시에 warehouse 필드값이 "B"를 포함하고 있지 않은 도큐먼트

해답 3 - 다수의 조건을 동시에 만족하는 배열요소를 하나 이상 포함하고 있는 도큐먼트 쿼리

db.inventory.find({"instock":{$elemMatch:{warehouse:{$gt:"B"}, qty:{$lt:16}}}}) // 문자열 비교 사용

instock 배열의 객체 중에서 warehouse 필드값이 "B"보다 크고 동시에 qty 필드값이 16보다 작은 도큐먼트 

728x90