728x90
์ฐธ๊ณ : https://docs.mongodb.com/manual/tutorial/query-arrays/
๋ฐฐ์ด ์ฟผ๋ฆฌ
inventory collection ๊ธฐ๋ฐ์ผ๋ก ์์ ๋ฅผ ์งํํ๋ค.
db.inventory.insertMany( [
{ item: "journal", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] },
{ item: "notebook", status: "A", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] },
{ item: "paper", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] },
{ item: "planner", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] },
{ item: "postcard", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
- ๋ฐฐ์ด ์ผ์น
- ๋ฐฐ์ด์ ํ๋ฑ ์กฐ๊ฑด์ ์ง์ ํ๋ ค๋ฉด ์ฟผ๋ฆฌ ๋ฌธ์ ์ฌ์ฉ ์์์ ์์๋ฅผ ํฌํจํ์ฌ ๋ฐฐ์ด์ ๋งค์น๋๋ ์ ํํ document์ ๊ฐ์ ์ฌ์ฉํด์ผํ๋ค. ex) “red”, “blank”๊ฐ ํฌํจ๋์ด ์๋ ๋ชจ๋ ๋ฐฐ์ด์ ์ฐพ๊ณ ์ถ๋ค๋ฉด $all ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
db.inventory.find( { tags: ["red", "blank"] } )
db.inventory.find( { tags: { $all: ["red", "blank"] } } )
- ex) ํ๋ tags ์ value์ธ [”red”, “blank”] ๋ฐฐ์ด์ ๊ฒ์
- ์์์ ๋ํ ๋ฐฐ์ด ์ฟผ๋ฆฌ
- ๋ฐฐ์ด ํ๋๊ฐ ์ ์ด๋ 1๊ฐ์ ์ง์ ๋ ๊ฐ์ผ๋ก ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ์ฟผ๋ฆฌํ๋ ค๋ฉด { : } ํํฐ๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
๋ฐฐ์ด ํ๋์ ์์์ ๋ํ ์กฐ๊ฑด์ ์ง์ ํ๋ ค๋ฉดex) ๋ฐฐ์ด dim_cm์ 25๋ณด๋ค ํฐ ์์๊ฐ ํ๋ ์ด์ ํฌํจ๋ ๋ชจ๋ document๋ฅผ ์ ํํ๋ค. → $gt ์ฌ์ฉdb.inventory.find( { tags: "red" } )
db.inventory.find( { dim_cm: { $gt: 25 } } )
{ <array field>: { <operator1>: <value1>, ... } }
- ex) ํ๊ทธ๊ฐ "red" ๋ฌธ์์ด์ ์์ ์ค ํ๋๋ก ํฌํจํ๋ ๋ฐฐ์ด์ธ ๋ชจ๋ document๋ฅผ ์ ํํ๋ค.
- ๋ฐฐ์ด ํ๋๊ฐ ์ ์ด๋ 1๊ฐ์ ์ง์ ๋ ๊ฐ์ผ๋ก ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ์ฟผ๋ฆฌํ๋ ค๋ฉด { : } ํํฐ๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
- ๋ฐฐ์ด ์์์ ๋ํด ์ฌ๋ฌ ์กฐ๊ฑด ์ง์
- ๋ฐฐ์ด ์์์ ๋ณตํฉ ์กฐ๊ฑด์ ์ง์ ํ ๋๋ฐฐ์ด ์์์ ์กฐํฉ์ด ์กฐ๊ฑด์ ์ถฉ์กฑํ๋๋ก
- ์ฟผ๋ฆฌ๋ฅผ ์ง์ ํ ์ ์๋ค.
- ๋จ์ผ ๋ฐฐ์ด ์์๊ฐ ์กฐ๊ฑด์ ์ถฉ์กฑํ๊ฑฐ๋
- ๋ฐฐ์ด ์์์ ๋ํ ๋ณตํฉ ํํฐ ์กฐ๊ฑด์ผ๋ก ๋ฐฐ์ด ์ฟผ๋ฆฌex) dim_cm ๋ฐฐ์ด์ ํ ์์๋ 15๋ณด๋ค ํฌ๊ณ 20 ๋ณด๋ค๋ ์์ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ฉด
db.inventory.find( { dim_cm: { $gt: 15, $lt: 20 } } )
- ๋ค์ ์์ ์์๋ dim_cm ๋ฐฐ์ด์ด ์ฟผ๋ฆฌ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ์์๊ฐ ํฌํจ๋ document๋ฅผ ์ฟผ๋ฆฌํ๋ค.
- ์ฌ๋ฌ ๊ธฐ์ค์ ์ถฉ์กฑํ๋ ๋ฐฐ์ด ์์์ ๋ํ ์ฟผ๋ฆฌ
$eleMatch๋ฅผ ์ฌ์ฉํด์ ํ๋ ์ด์์ ๋ฐฐ์ด ์์๊ฐ ์ง์ ๋ ๋ชจ๋ ๊ธฐ์ค์ ์ถฉ์กฑํ๋๋ก ๋ฐฐ์ด ์์์ ์ฌ๋ฌ ๊ธฐ์ค์ ์ง์ ํ๋ค.db.inventory.find( { dim_cm: { **$elemMatch**: { $gt: 22, $lt: 30 } } } )
- ex) dim_cm ๋ฐฐ์ด์ ($gt) 22๋ณด๋ค ํฌ๊ณ ($lt) 30๋ณด๋ค ์์ ์์๊ฐ ํ๋ ์ด์ ํฌํจ๋์ด ์๋ค.
- ๋ฐฐ์ด ์ธ๋ฑ์ค ์์น๋ก ์์ ์ฟผ๋ฆฌ
- ์ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ํน์ ์ธ๋ฑ์ค ๋๋ ์์น์ ์๋ ์์์ ๋ํ ์ฟผ๋ฆฌ ์กฐ๊ฑด์ ์ง์ ํ ์ ์๋ค.
- ๋ฐฐ์ด์ 0๋ถํฐ ์์ํ๋ ์ธ๋ฑ์ฑ์ ์ฌ์ฉํ๋ค.
db.inventory.find( { "dim_cm.1": { $gt: 25 } } )
- ex) dim_cm ๋ฐฐ์ด์ ๋ ๋ฒ์งธ ์์๊ฐ 25๋ณด๋ค ํฐ document๋ฅผ ์ฟผ๋ฆฌํ๋ค.
- ๋ฐฐ์ด ๊ธธ์ด๋ก ๋ฐฐ์ด ์ฟผ๋ฆฌ
- $size ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ ์์ ์๋ก ๋ฐฐ์ด์ ์ฟผ๋ฆฌํ๋ค.
db.inventory.find( { "tags": { $size: 3 } } )
- ex) tags ๋ฐฐ์ด์ 3๊ฐ์ ์์๊ฐ ์๋ document๋ฅผ ์ ํํ๋ค.
- $size ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ ์์ ์๋ก ๋ฐฐ์ด์ ์ฟผ๋ฆฌํ๋ค.
728x90
๋ฐ์ํ
'Database > MongoDB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
MongoDB - Query์์ ๋ฐํํ projectjon field (0) | 2021.12.19 |
---|---|
MongoDB - ๋ฐฐ์ด ์ฟผ๋ฆฌ - (2) (0) | 2021.12.19 |
MongoDB - Document Query(์กฐํ) - (2) (0) | 2021.12.18 |
MongoDB - Document Query(์กฐํ) - (1) (0) | 2021.12.18 |
MongoDB - Database/Collection/Document์์ฑ,์ ๊ฑฐ (0) | 2021.12.18 |