๐Ÿ–‡๏ธ Operators & Complex Queries

์ด๋ฒˆ์—๋Š” mongdoDB์˜ ์—ฐ์‚ฐ์ž, ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋‹ค๋ค„ ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ์ด์ „ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋ง ํ•˜๋Š”๋ฒ•์„ ์ž ๊น ๋ฐฐ์› ๋Š”๋ฐ, ์ด๋ฒˆ์—๋Š” ํ•„ํ„ฐ๋ง์— ์—ฐ์‚ฐ์ž๋ฅผ ์ถ”๊ฐ€ํ•ด ์กฐ๊ธˆ ๋” ๋‚˜์€ ๊ธฐ๋Šฅ์„ ์จ๋ณด์ž. ์ด์ „ ํ•„ํ„ฐ๋ง์—์„œ๋Š” db.books.find({rating : 7})์„ ํ•˜์—ฌ books ์ปฌ๋ ‰์…˜์— ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์ค‘ rating : 7์„ ๊ฐ€์ง„ document๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋กœ์ง์„ ์ˆ˜ํ–‰ํ–ˆ์—ˆ๋Š”๋ฐ, ์ด๋ฒˆ์—๋Š” rating์ด 7 ์ด์ƒ์ธ document๋งŒ ๊ฐ€์ ธ์™€ ๋ณด์—ฌ์ฃผ๋Š” ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•ด๋ณด์ž.

 

 ์‚ฌ์‹ค ์—ฐ์‚ฐ์ž๋กœ ์ œ์ผ ์ง๊ด€์ ์ธ ๋ถ€๋“ฑํ˜ธ๋ฅผ ์“ธ ์ค„ ์•Œ์•˜์ง€๋งŒ, ๋‹ฌ๋Ÿฌ์‚ฌ์ธ๊ณผ ํŠน์ • ์ปค๋งจ๋“œ๋ฅผ ์ด์šฉํ•˜๋‹ˆ ์ข€ ๋‹นํ™ฉ์Šค๋Ÿฌ์› ๋‹ค. ์—ฌ๊ธฐ์„œ 

.find({ rating : {$gt : 7}})์€, rating์ด 7๋ณด๋‹ค ํฐ ๊ฐ’๋“ค์„ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.(์—ฌ๊ธฐ์„œ rating์ด 7์ธ ๊ฐ’๋“ค์€ ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค.) ์ฆ‰, $gt๋Š” >= ๊ฐ€ ์•„๋‹Œ >์™€ ๊ฐ™๋‹ค.

 

  • $gt : greater than
  • $lt : less than

๋งŒ์•ฝ ์—ฌ๊ธฐ์„œ < , >๊ฐ€ ์•„๋‹ˆ๋ผ ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด์„ ํ•˜๊ณ ์‹ถ๋‹ค๋ฉด, 

  • gte : greater than or equal
  • lte : less than or equal

์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๋˜ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” or ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ or์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€์˜ ์กฐ๊ฑด์ด ์ฃผ์–ด์กŒ์„๋•Œ, ๋‹จ ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•˜๋ฉด '์ฐธ'์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” books ์ปฌ๋ ‰์…˜์—์„œ rating์ด 7์ด๊ฑฐ๋‚˜ 9์ธ ์ฑ…๋“ค์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ปค๋งจ๋“œ์ด๋‹ค.

db.books.find({$or : [{rating : 7}, {rating : 9}]})

 

๋จผ์ €, find๋ฅผ ํ†ตํ•ด ๋ชจ๋“  document๋ฅผ ์ฐธ์กฐํ•˜๊ณ , $or์„ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ or์€  : ๋’ค์— ์˜ค๋Š”๊ฒƒ๋“ค๋กœ ๊ตฌ๋ถ„์ง€์–ด์ง€๋Š”๋ฐ, []๋กœ ๋ฐฐ์—ด์•ˆ์— {}๋ฅผ ํฌํ•จ์‹œ์ผœ ์กฐ๊ฑด๋“ค์„ ๋„ฃ์–ด์ค€๋‹ค.

 

๐Ÿ–‡๏ธ $in, $nin

๐ŸŸข $in

$in ์—ฐ์‚ฐ์ž๋Š” ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ํŠน์ • ๊ฐ’๋“ค๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋ณด์ž.

์œ„ ์ปค๋งจ๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž. ๋จผ์ €, .find()๋กœ books ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  document๋ฅผ ์ฐธ์กฐํ•˜๊ณ , find์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ { rating : }์„ ์ฃผ์–ด find()๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๋ชจ๋“  document์˜ rating์„ ์ฐธ์กฐํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ rating : {$in : [7,8,9]}๋Š” rating์ด 7์ด๊ฑฐ๋‚˜ 8์ด๊ฑฐ๋‚˜ 9์ธ document๋ฅผ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋ณด๋ฉด ์œ„์—์„œ ๋ฐฐ์šด or์ด๋ž‘ ๋ญ๊ฐ€ ๋‹ค๋ฅธ๊ฑด๊ฐ€ ์‹ถ์€ ์ƒ๊ฐ์ด ๋“ค๊ฒƒ์ด๋‹ค. $in : [7,8,9]๋Š” $or : [{rating : 7}, {rating : 8}, {rating : 9}]์™€ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ์˜ ๊ธธ์ด๋กœ ๋ณด๋”๋ผ๋„ $in์„ ์“ฐ๋Š”๊ฒƒ์ด ํ›จ์”ฌ ์งง๊ณ  ์ง๊ด€์ ์ด๋‹ค. 

 

๐ŸŸข $nin

๋ˆˆ์น˜๊ฐ€ ๋น ๋ฅด๋‹ค๋ฉด $nin์€ not-in์˜ ์ค„์ž„๋ง ์ด๋ผ๋Š”๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, $in์€ ํŠน์ • ๋ฒ”์œ„ ์•ˆ์— ์žˆ๋Š” ๊ฐ’๋“ค์„ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค๋ฉด, $nin์€ ์ด ๋ฒ”์œ„์•ˆ์— ํ•ด๋‹น๋˜์ง€ ์•Š๋Š” ๊ฐ’๋“ค์„ ๋ฐ˜ํ™˜ํ•˜๋ ค ํ•  ๊ฒƒ์ด๋‹ค.

 

 

์œ„๋ฅผ ๋ณด๋ฉด, rating์ด 7,8,9๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  document๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ปค๋งจ๋“œ์ด๋‹ค.

+ Recent posts