๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

NODE/node.js

Nodejs_Day 04 :: DB ์‚ฌ์šฉ NoSQL / MongoDB ํŠน์ง•๊ณผ ์‚ฌ์šฉ๋ฒ•

 

NoSQL (Not Only SQL์˜ ์•ฝ์ž๋‹ค) ๐Ÿ’–

 

๊ธฐ์กด์˜  RDBMS์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ƒˆ๋กœ์šด ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.

๊ด€๊ณ„ํ˜• DB๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ, RDBMS์ฒ˜๋Ÿผ ๊ณ ์ • ๋œ ์Šคํ‚ค๋งˆ ๋ฐ  JOIN๋ฌธ์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

NoSQL์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ด์œ ๋Š” ์„ฑ๋Šฅ ๋•Œ๋ฌธ์ด๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์‹œ์Šคํ…œ์˜ ์‹ ๋ขฐ๋„๋ฅผ ๋†’์ด๋Š”๋ฐ ํ•„์š”ํ•œ ์žฅ์น˜๋ฅผ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

SQL๋ฌธ์„ ์ฝ๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

๋ฐ˜๋Œ€๋กœ NoSQL์€ ์„ฑ๋Šฅ์„ ์ตœ์šฐ์„ ์œผ๋กœ ์ƒ๊ฐํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋‚˜

๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ๋‹น ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ๋“ฑ์— ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

 

-------------------------------------------------------------------------------------------------

 

MongoDB ๐Ÿ’–

 

 

C++๋กœ ์ž‘์„ฑ ๋œ ์˜คํ”ˆ์†Œ์Šค ๋ฌธ์„œ์ง€ํ–ฅ์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฉฐ, ๋›ฐ์–ด๋‚œ ํ™•์žฅ์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ํ˜„์กดํ•˜๋Š” NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘ ๊ฐ€์žฅ ๋งŽ์€ ์‚ฌ์šฉ๋ฅ ์„ ๊ธฐ๋กํ•˜๊ณ  ์žˆ๋‹ค.

db-engines.com/en/ranking

 

DB-Engines Ranking

Popularity ranking of database management systems.

db-engines.com

โ–ฒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ๋ฅ  ์ˆœ์œ„ ์•Œ์•„๋ณด๋Š” ์‚ฌ์ดํŠธ

 

MongoDB ๋‹ค์šด๋กœ๋“œ

www.mongodb.com/

 

The most popular database for modern apps

We're the creators of MongoDB, the most popular database for modern apps, and MongoDB Atlas, the global cloud database on AWS, Azure, and GCP. Easily organize, use, and enrich data โ€” in real time, anywhere.

www.mongodb.com

[Software - community server - ๋‹ค์šด๋กœ๋“œ ํด๋ฆญ]

Complete ๋ฒ„์ „์œผ๋กœ ๋‹ค์šด๋ฐ›๊ธฐ - compass ์ฒดํฌ ์—†์• ๊ณ  ์„ค์น˜ํ•ด์•ผ๋จ

 

MongoDB ํ™˜๊ฒฝ์„ค์ • (ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋“ฑ๋ก) ๐Ÿ’–

 

์‹œ์Šคํ…œ (๋‚ด PC ์šฐํด๋ฆญ - ์†์„ฑ - ๋“ฑ๋ก์ •๋ณด - ๊ณ ๊ธ‰ ์‹œ์Šคํ…œ ์„ค์ •) > ๊ณ ๊ธ‰ > ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํด๋ฆญ > ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ > path๋ฅผ ์ฐพ์•„ ํŽธ์ง‘ ๋ฒ„ํŠผ ํด๋ฆญ >์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ ํด๋ฆญ > C:\Program Files\MongoDB\Server\4.2\bin ์ด ๊ฒฝ๋กœ ๋ถ™์—ฌ๋„ฃ๊ณ  ์ถ”๊ฐ€ > ๊ณ„์†ํ•ด์„œ ํ™•์ธ ๋ˆ„๋ฅด๊ธฐ

 

* ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ (CMD์ฐฝ)

>> mongo ์ž…๋ ฅ

mongo ์ž…๋ ฅํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ํ™˜๊ฒฝ์„ค์ •์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ปค์„œ๊ฐ€ ๊นœ๋ฐ•๊นœ๋ฐ• ๊ฑฐ๋ฆฌ๋ฉด ์™„๋ฒฝํ•˜๊ฒŒ ์„ค์น˜ ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๋œป

 

MongoDB ํŠน์ง•

 

1. NoSQL์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ๊ฐœ๋…์ด ์—†์Šต๋‹ˆ๋‹ค.

2. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ์ธ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋ฅผ ์ปฌ๋ ‰์…˜์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

3. SQL ๋ฌธ๋ฒ•์€ ์—†๋‹ค. ( insert ์ด๋Ÿฐ๊ฑฐ ์„ ์–ธ ํ•˜์ง€ ์•Š์•„๋„ ๋จ )

4. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์„ ์“ด๋‹ค.

5. ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ•ด ๋†“์€ ์ปฌ๋Ÿผ์˜ ํ˜•ํƒœ๋กœ ์ปฌ๋ ‰์…˜์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ œ์•ฝ์ด ์—†๋‹ค.

6. ๋ชฝ๊ณ ๋””๋น„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ปฌ๋ ‰์…˜์˜ ์ง‘ํ•ฉ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

7. ์ปฌ๋ ‰์…˜์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฌธ์„œ๊ฐ์ฒด๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œ๊ฐ์ฒด๋Š” ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ์จ ํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„, ๋‚˜์ด ๋“ฑ์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์„œ๊ฐ์ฒด๋ฅผ ๋งŒ๋“  ํ›„

๊ทธ ์•ˆ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์™€ ๊ฐ™์ด ์†์„ฑ๋“ค์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

{

  "userid" : "apple"

 }

 

์ด๋Ÿฐ์‹์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. { "" : ""; } ์š”๋ ‡๊ฒŒ

 

8. ์—ด์„ ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ๋ง‰ ๋„ฃ์–ด๋„ ๋œ๋‹ค. row ์ž์ฒด๊ฐ€ ์„œ๋กœ ๋‹ฌ๋ผ๋„ ๋œ๋‹ค. ( = ์ž์œ ๋กœ์šด ํ˜•์‹)


---------------------------------------
1       apple   ๊น€์‚ฌ๊ณผ  1234
2       banana  ๋ฐ˜ํ•˜๋‚˜  1010  ์—ฌ์ž
---------------------------------------

 

MongoDB Collection ๐Ÿ’–

 

๋ชฝ๊ณ ๋””๋น„์˜ Document์˜ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. Collection ๋‚ด๋ถ€์— Document๋“ค์ด ์œ„์น˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

RDBMS์˜ table๊ณผ ์•ฝ๊ฐ„ ๋น„์Šทํ•œ ๊ฐœ๋…์ด์ง€๋งŒ RDBMS์™€ ๋‹ฌ๋ฆฌ ์Šคํ‚ค๋งˆ๋ฅผ ๋”ฐ๋กœ ๊ฐ€์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด Document ๋“ค์ด ๋™์ ์ธ ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

MongoDB Document ๐Ÿ’–

 

RDBMS์˜ record์™€ ๋น„์Šทํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ตฌ์กฐ๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ KEY-value-pair๋กœ ์ด๋ค„์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

Document๋Š” ๋™์ ์ธ ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ Collection ์•ˆ์— ์žˆ๋Š” Document ๋ผ๋ฆฌ ๋‹ค๋ฅธ ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

-------------------------------------------------------------------------------------------------

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ ๋ฐ ์‚ฌ์šฉ ๐Ÿ’–

-------------------------------------------------------------------------------------------------


โ— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™•์ธ


>> show dbs

์˜ˆ)
admin   0.000GB
config  0.000GB
local   0.000GB

์ด๋ ‡๊ฒŒ ์ด 3๊ฐœ ๊ฐ€์žˆ๋‹ค.

โ— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ


>> use ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช…
์˜ˆ) use nodedb

>> use nodedb
switched to db nodedb

์ด๋ ‡๊ฒŒ ๋ฐ”๋€Œ์—ˆ๋‹ค๊ณ  ๋‚˜์˜จ๋‹ค.
* ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ž๋ฃŒ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค.

 

โ— ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ

 

>> db.createCollection("์ปฌ๋ ‰์…˜๋ช…")
์˜ˆ) db.createCollection("testCollecton")
> db.createCollection("testCollection")
{ "ok" : 1 } // ๋งŒ๋“ค์–ด์ง€๋ฉด ok๋ผ๊ณ  ๋–จ์–ด์ง„๋‹ค.

 

โ— ์ปฌ๋ ‰์…˜ ํ™•์ธ

 

>> show collections
์˜ˆ)  testCollection

 

โ— ์ปฌ๋ ‰์…˜ ์‚ญ์ œ

 

>> db.์ปฌ๋ ‰์…˜๋ช….drop()

>> db.testCollection.drop()

ex) true

 

๋‹ค์‹œ ์žฌํ™•์ธํ•˜๋ฉด ์‚ญ์ œ ๋œ ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์žฌํ™•์ธํ•˜๋Š” ๋ฒ•

>> show collections 

 

โ€ป ๋ช…๋ น์–ด ์‰ฝ๊ฒŒ ์“ฐ๋Š” ๋ฒ•

cr๊นŒ์ง€๋งŒ ์“ฐ๊ณ  tab key ๋ˆ„๋ฅด๋ฉด ์•Œ์•„์„œ ์ž๋™์™„์„ฑ๋œ๋‹ค.

collection๋„ co๋ˆ„๋ฅด๊ณ  tab ํ‚ค ๋ˆ„๋ฅด๋ฉด ์ž๋™์™„์„ฑ!!

 

โ— Document ์ถ”๊ฐ€

 

>> db.์ปฌ๋ ‰์…˜๋ช….insert(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด)

์˜ˆ) db.member.insert("userid" : "apple" , "name" : "๊น€์‚ฌ๊ณผ", "๋น„๋ฐ€๋ฒˆํ˜ธ" : "1234" }

WriteResult({ "nInserted" : 1 }) // ์ด๋ ‡๊ฒŒ ์ถœ๋ ฅ๋œ๋‹ค.

 

db.member.insert({"userid":"banana", "name":"๋ฐ˜ํ•˜๋‚˜"})

db.member.insert({"userid":"orange", "name":"์˜ค๋ Œ์ง€", "age":25})

db.member.insert({"userid":"melon", "name":"์ด๋ฉ”๋ก ", "age":21})

db.member.insert({"userid":"cherry", "name":"์ฒด๋ฆฌ", "age":28, "gender":"์—ฌ์ž"})

db.member.insert({"userid":"avocado", "name":"์••์นด๋„", "age":26, "gender":"๋‚จ์ž"})

db.member.insert({"userid":"blueberry", "name":"๋ธŒ๋ฒ ", "age":24, "gender":"๋‚จ์ž"})

db.member.insert({"userid":"coconut", "name":"๊ณ ์ฝ”๋„›", "age":27, "gender":"์—ฌ์ž"})

 

โ— Document ํ™•์ธ

 

>> db.์ปฌ๋ ‰์…˜๋ช….find()

{ "_id" : ObjectId("5f1d1aa7c5b577b01c7e9c30"), "userid" : "apple", "name" : "๊น€์‚ฌ๊ณผ" } // ์ด๋Ÿฐ์‹์œผ๋กœ ํ™•์ธ๋œ๋‹ค.

 

>> db.์ปฌ๋ ‰์…˜๋ช….find().pretty() // ๋ฐ์ดํ„ฐ๊ฐ€ ํ›จ์‹  ๋” ๋ณด๊ธฐ ์ข‹๊ฒŒ ๋‚˜์˜จ๋‹ค.

>> db.์ปฌ๋ ‰์…˜๋ช….find(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด).pretty() // ๋‚ด๊ฐ€ ๋ณด๊ณ ์‹ถ์€ ๊ฐ์ฒด๋งŒ ๋ณด๊ณ ์‹ถ์„ ๋•Œ

ex) db.member.find({"userid" : "orange"}).pretty()

 

โ— Document ๋น„๊ต์—ฐ์‚ฐ

 

$eq : ์ฃผ์–ด์ง„ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
$gt : ์ฃผ์–ด์ง„ ๊ฐ’๋ณด๋‹ค ํฐ ๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
$gte : ์ฃผ์–ด์ง„ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
$lt : ์ฃผ์–ด์ง„ ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
$lte : ์ฃผ์–ด์ง„ ๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
$ne : ์ฃผ์–ด์ง„ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์€ ์ฐพ์Šต๋‹ˆ๋‹ค.
$in : ์ฃผ์–ด์ง„ ๋ฐฐ์—ด ์•ˆ์— ์†ํ•˜๋Š” ๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
$nin : ์ฃผ์–ด์ง„ ๋ฐฐ์—ด ์•ˆ์— ์†ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ ) ๋‚˜์ด๊ฐ€ 26์‚ด๋ณด๋‹ค ์ ์€ ๋ฉค๋ฒ„๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

>> db.member.find({"age":{$lt:26}}).pretty();

์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

 

โ— Document ๋…ผ๋ฆฌ์—ฐ์‚ฐ

 

$or : ์ฃผ์–ด์ง„ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ true์ผ ๋•Œ true์ธ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
$and : ์ฃผ์–ด์ง„ ๋ชจ๋“  ์กฐ๊ฑด์ด true์ผ ๋•Œ true์ธ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
$not : ์ฃผ์–ด์ง„ ์กฐ๊ฑด์ด false์ผ ๋•Œ, truetrue์ผ ๋•Œ false์ธ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
$nor : ์ฃผ์–ด์ง„ ๋ชจ๋“  ์กฐ๊ฑด์ด ๋‹ค๋ฅผ ๋•Œ true๊ฐ™์„ ๋•Œ false์ธ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

 

-------------------------------------------------------------------------------------------------

์‹ค์Šต ์—ฐ์Šต ๋ฌธ์ œ ๐Ÿ’–

-------------------------------------------------------------------------------------------------

 

1. ์ด๋ฆ„์ด "์•„๋ณด์นด๋„"์ธ ๋ฉค๋ฒ„๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

>> db.member.find({"name":"์•„๋ณด์นด๋„"}).pretty();

 

2. ๋‚˜์ด๊ฐ€ 25์‚ด๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๋ฉค๋ฒ„๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

>> db.member.find({"age":{$gte:25}}).pretty();

 

3. ์•„์ด๋””๊ฐ€ "apple" ์ด๊ฑฐ๋‚˜ "banana"์ธ ๋ฉค๋ฒ„๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

>> db.member.find({ $or : [{"userid":"apple"} , {"userid":"apple"}]}).pretty();

 

4. ์•„์ด๋””๊ฐ€ "cherry"์ด๊ณ  ๋‚˜์ด๊ฐ€ 28์‚ด์ธ ๋ฉค๋ฒ„๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

>> db.member.find({$and : [{"userid" : "cherry" } , { "age" : "28" }]}).pretty();

 

5. ์„ฑ๋ณ„์ด ๋‚จ์ž์ด๊ณ  ๋‚˜์ด๊ฐ€ 25์‚ด ์ด์ƒ์ธ ๋ฉค๋ฒ„๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

>> db.member.find($and : [{"gender" : "๋‚จ์ž" }, {"age" : {$get: 25}]).pretty();

 

-------------------------------------------------------------------------------------------------

 

โ— Document ๋…ผ๋ฆฌ์—ฐ์‚ฐ

 

>> db.์ปฌ๋ ‰์…˜๋ช….find().sort(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด)

- {key : value} : key๋Š” ๋ฐ์ดํ„ฐ์˜  field ์ด๋ฆ„์ด๊ณ  value์˜ ๊ฐ’์€ 1 ๋˜๋Š” -1์ž…๋‹ˆ๋‹ค.

1๋กœ ์„ค์ •ํ•˜๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ, -1๋กœ ์„ค์ •ํ•˜๋ฉด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์—ฌ๋Ÿฌ key๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๊ณ , ๋จผ์ € ์ž…๋ ฅํ•œ Key ๊ฐ€ ์šฐ์„ ๊ถŒ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

 

์˜ˆ) db.member.find().sort({"_id" : 1}).pretty();

 

โ— Document ๊ฐœ์ˆ˜์˜ ์ œํ•œ

 

limit() : ์ถœ๋ ฅํ•  ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๋ฅผ ์ œํ•œ ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

>>db.์ปฌ๋ ‰์…˜๋ช….find().limit(์ถœ๋ ฅ ํ•  ๊ฐœ์ˆ˜)

์˜ˆ) db.member.find().limit(3).pretty()

 

โ— Document ๋ฐ์ดํ„ฐ ์ƒ๋žต ํ›„ ์ถœ๋ ฅ

 

skip() : ์ถœ๋ ฅ ํ•  ๋ฐ์ดํ„ฐ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์„ ์„ค์ • ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

db.์ปฌ๋ ‰์…˜๋ช….find().skip(์ƒ๋žตํ•  ๊ฐœ์ˆ˜)

์˜ˆ) db.member.find().skip(2)

 

-------------------------------------------------------------------------------------------------

์‹ค์Šต ์—ฐ์Šต ๋ฌธ์ œ ๐Ÿ’–

-------------------------------------------------------------------------------------------------

 

member ์ปฌ๋ ‰์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

1. ์ฝ”์ฝ”๋„›, ๋ฒ ๋ฆฌ, ์•„๋ณด์นด๋„

db.member.find().sort({"_id" : -1}).limit(3) // ์—ญ์ˆœ์ด๋‹ˆ ๋‚ด๋ฆผ์ฐจ์ˆœ์ธ -1 ๊ฐ’์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

2. ์ฒด๋ฆฌ, ์ด๋ฉ”๋ก , ์˜ค๋ Œ์ง€

db.member.find().sort({"_id" : -1}).skip(3).limit(3)

 

3. ๋ฐ˜ํ•˜๋‚˜, ๊น€์‚ฌ๊ณผ

db.member.find().sort({"_id":-1}.skip(6).limit(3)

db.member.find().sort({"_id":-1}.skip(6).limit(3)sort({"_id":-1}).skip((x-1)*3).limit(3) // ๊ฒŒ์‹œํŒ ํŽ˜์ด์ง•์— ์‘์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โ— Document UPDATE (์ˆ˜์ • ํ•œ๋‹ค๋Š” ๋œป)

 

1. ํŠน์ • field ์—…๋ฐ์ดํŠธ

>> db.์ปฌ๋ ‰์…˜๋ช….update(๋ณ€๊ฒฝ ํ•  ๊ฐ์ฒด, {$set : ๊ฐ์ฒด})

์˜ˆ) db.member.update({"userid":"blueberry"},{$set: {name:"๋ฒ ๋ฆฌ"})

 

2. document replace (๋ณ€๊ฒฝ)

>> db.์ปฌ๋ ‰์…˜๋ช….update(๋ณ€๊ฒฝ ํ•  ๊ฐ์ฒด, ๋ฐ”๋€” ๊ฐ์ฒด)

์˜ˆ) db.member.update({"userid" : "avocado"}, {"userid" : "avocado", "name" : "์•„๋ณด์นด", age: 30, score:0})

=> ํ‚ค ๊ฐ’์€ ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜๋“  ๋ง๋“  ์‚ฌ์šฉ ์—†๋‹ค. ๋‚ด์šฉ๋ฌผ์ด ๋” ํ’๋ถ€ํ•˜๊ฒŒ ์ˆ˜์ •๋จ

 

ex)

>> db.member.find({"userid" : "avocado"}) ์ž…๋ ฅ์‹œ

{ "_id" : ObjectId("5f1d27e420c0f5bcf0c5642a"), "userid" : "avocado", "name" : "์•„๋ณด์นด", "age" : 30, "score" : 0 }

 

์ด๋ ‡๊ฒŒ ์ถœ๋ ฅ๋˜์–ด ๋‚˜์˜จ๋‹ค.

์„ฑ๋ณ„๋„ ์‚ฌ๋ผ์ง„๋‹ค $set ์ƒ๋žตํ•˜๋ฉด ์ „๋ถ€ ๋‹ค ๊ต์ฒด๋œ๋‹ค. ์ƒˆ๋กœ์šด document๋กœ replace ํ•  ๋•Œ, _id๋Š” ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

 

3. ํŠน์ • field๋ฅผ ์ œ๊ฑฐ

>> db.์ปฌ๋ ‰์…˜๋ช….update(์ œ๊ฑฐํ• ํ•  ๊ฐ์ฒด, {$unset : {์ œ๊ฑฐํ•  ๊ฐ์ฒด})

ex) db.member.update({name:"๋ฒ ๋ฆฌ"}, {$unsest : {score:1}})

ex) db.member.update({name:"์•„๋ณด์นด"}, {$unsest : {score:1}})

 

4. ํŠน์ • document๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ƒˆ๋กœ ์ถ”๊ฐ€

>> db.์ปฌ๋ ‰์…˜๋ช….update(์ถ”๊ฐ€ ํ•  ๊ฐ์ฒด, ์ถ”๊ฐ€ ํ•  ๊ฐ์ฒด ..., {upsert : true})

์˜ˆ) db.member.update({ "userid" : "lime"}, {"name" : "๋ผ์ž„"}, age:23, score:100, "gender" : "์—ฌ์ž"}, {upsert:ture})

 

5. ์—ฌ๋Ÿฌ document์˜ ํŠน์ • field๋ฅผ ์ˆ˜์ •

>>db.์ปฌ๋ ‰์…˜๋ช….update(์ ์šฉํ•  ๊ฐ์ฒด, $set: {์ˆ˜์ •ํ•  ๊ฐ์ฒด}, {multi:true})

 

์กฐ๊ฑด : age๊ฐ€ 21์‚ด๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ document์˜ score๋ฅผ 10์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

db.member.update({age:{$gte:21}}, {$set:{scroe:10}},{multi:true})

db.member.update({age:{$gte:21}}, {$set:{pass:"1111"}},{multi:true})

 

6. document ์‚ญ์ œ

>> db.์ปฌ๋ ‰์…˜๋ช….remove(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด)

์˜ˆ) db.member.remove({ "name" : "๋ผ์ž„" })