[MongoDB] 2. 기본 사용법

MongoDB의 쉘

Create

> use sample
switched to db sample
현재 사용중인 DB
db
DB 목록
> show dbs
local             0.000GB
> show collections

## 또는
> db.getCollectionNames()

Insert

db.books.insert(
  <document or array of documents>,
  {
    writeConcern: <document>,
    ordered: <boolean>
  }
)
Parameter Type Description
document document or array collection에 insert할 document 또는 document의 array이다.
writeConcern document Option. database에 write(insert, update, remove) 처리를 영속화시키기 위한 설정이다. 기본 설정을 사용하려면 이 설정을 생략한다. 자세한 내용은 Write Concern을 참조하기 바란다.
ordered boolean Option(Defaults: true). true로 설정하면 document array의 인덱스 순으로 insert한다. 처리중 에러가 발생하면 에러가 발생된 document 이후의 처리는 진행되지 않는다.
> db.books.insert({ title: "Example1", author: "Lee", price: 100 })
WriteResult({ "nInserted" : 1 })
> db.books.insert([
  { title: "Example2", author: "Lee", price: 200 },
  { title: "Example3", author: "Lee", price: 300 },
  { title: "Example4", author: "Lee", price: 400 }
  ])

BulkWriteResult({
  "writeErrors" : [ ],
  "writeConcernErrors" : [ ],
  "nInserted" : 3,
  "nUpserted" : 0,
  "nMatched" : 0,
  "nModified" : 0,
  "nRemoved" : 0,
  "upserted" : [ ]
})
> db.books.insert({ title: "Example5", author: "Lee", price: 200, stock: 0 })
WriteResult({ "nInserted" : 1 })
> show collections
books

> db.getCollectionNames()
[ "books" ]

Read

db.collection.find(query, projection)
Parameter Type Description
query document Option. document selection criteria(기준)이다. criteria 없이 collect 내의 모든 document를 select하는 경우에는 생략하거나 { }를 전달한다. SQL의 WHERE절과 유사하다.
projection document Option. document select 결과에 포함될 field이다.
> db.books.find()
{ "_id" : ObjectId("57bd5f2e414be2f9e2b81770"), "title" : "Example1", "author" : "Lee", "price" : 100 }
{ "_id" : ObjectId("57bd5f34414be2f9e2b81771"), "title" : "Example2", "author" : "Lee", "price" : 200 }
{ "_id" : ObjectId("57bd5f34414be2f9e2b81772"), "title" : "Example3", "author" : "Lee", "price" : 300 }
{ "_id" : ObjectId("57bd5f34414be2f9e2b81773"), "title" : "Example4", "author" : "Lee", "price" : 400 }
{ "_id" : ObjectId("57bd5f3b414be2f9e2b81774"), "title" : "Example5", "author" : "Lee", "price" : 200, "stock" : 0 }
> db.books.find().pretty()
{
  "_id" : ObjectId("57bd5f2e414be2f9e2b81770"),
  "title" : "Example1",
  "author" : "Lee",
  "price" : 100
}
{
  "_id" : ObjectId("57bd5f34414be2f9e2b81771"),
  "title" : "Example2",
  "author" : "Lee",
  "price" : 200
}
{
  "_id" : ObjectId("57bd5f34414be2f9e2b81772"),
  "title" : "Example3",
  "author" : "Lee",
  "price" : 300
}
{
  "_id" : ObjectId("57bd5f34414be2f9e2b81773"),
  "title" : "Example4",
  "author" : "Lee",
  "price" : 400
}
{
  "_id" : ObjectId("57bd5f3b414be2f9e2b81774"),
  "title" : "Example5",
  "author" : "Lee",
  "price" : 200,
  "stock" : 0
}
> db.books.find({ }, { _id: 0, title: 1 })
{ "title" : "MongoDB Example" }
{ "title" : "Example1" }
{ "title" : "Example2" }
{ "title" : "Example3" }
SQL MONGO
SELECT id, title, author FROM books db.books.find({}, { title: 1, author: 1 })
SELECT title, author FROM books db.users.find({},{ _id: 0, title: 1, author: 1 })
SELECT title, author FROM books WHERE price = 200 db.books.find({ price: 200 },{ title: 1, author: 1, _id: 0 })
SELECT *
FROM books
WHERE price > 100
AND   price <= 400
db.books.find(
  { price: { $gt: 100, $lte: 400 } }
)
Operator Meaning Description
$eq equals 지정 값과 일치하는 값
$gt greater than 지정 값보다 큰 값
$gte greater than or equals 지정 값보다 크거나 같은 값
$lt less than 지정 값보다 작은 값
$lte less than or equals 지정 값보다 작거나 같은 값
$ne not equal 지정 값과 일치하지 않는 값
$in in an array 지정 배열 안에 속하는 값
$nin none in an array 지정 배열 안에 속하지 않는 값
db.books.find(
  { price: { $gt: 200, $lte: 400 } }
)

논리 연산자

Operator Description
$or 지정 조건중 하나라도 true이면 true
$and 모든 지정 조건이 true이면 true
$not 지정 조건이 false이면 true, true이면 false
$nor 모든 지정 조건이 false이면 true
db.books.find(
  { $or: [ { price: { $lt: 200 } }, { stock: 0 } ] }
)
db.books.find(
  { title : /Example[1-2]/ }
)

Update

db.<collection_name>.update(
  <query>,
  <update>,
  {
    upsert: <boolean>,
    multi: <boolean>,
    writeConcern: <document>
  }
)
Parameter Type Description  
query document update를 위한 selection criteria(기준)이다. find()의 query와 같다. SQL의 WHERE절과 유사하다.  
update document document에 update할 수정 사항이다.  
upsert boolean Option(Default: false) true로 설정하면 query criteria에 매칭하는 document가 없을 경우 새로운 document를 insert한다. false로 설정하면 insert하지 않는다.  
multi boolean Option(Default: false) true로 설정하면 query criteria에 매칭하는 document 모두를 update한다. false로 설정하면 하나의 document만 update한다.
writeConcern document Option. database에 write(insert, update, remove) 처리를 영속화시키기 위한 설정이다. 기본 설정을 사용하려면 이 설정을 생략한다. 자세한 내용은 Write Concern을 참조하기 바란다.
UPDATE books
SET author = "Kim"
WHERE price > 200
db.books.update(
  { price: { $gt: 200 } },
  { $set: { author: "Kim" } },
  { multi: true }
)
Operator Description
$inc field의 value를 지정한 수만큼 증가시킨다.
$rename field 이름을 rename한다.
$setOnInsert update()의 upsert가 true로 설정되었을 경우, document가 insert될 때의 field value를 설정한다.
$set update할 field의 value를 설정한다.
$unset document에서 설정된 field를 삭제한다
$min 설정값이 field value보다 작은 경우만 update한다.
$max 설정값이 field value보다 큰 경우만 update한다.
$currentDate 현재 시간을 설정한다
db.books.update(
  { author: "Kim" },
  { $inc: { price: -50 } }
)
db.test.insert([
  { ttle: "Example1", author: "Lee", price: 200 },
  { ttle: "Example2", author: "Lee", price: 300 },
  { ttle: "Example3", author: "Lee", price: 400 }
])

db.test.update(
  {},
  { $rename: { "ttle": "title" } },
  { multi: true }
)
db.test.update(
  { author: "Park" },
  {
    $set: { title: "Example4" },
    $setOnInsert: { price: 100 } // set default value
  },
  { upsert: true }
)
{
  "_id" : ObjectId("57b841d16a73151e5d98f3c9"),
  "author" : "Park",
  "title" : "Example4",
  "price" : 100
}
db.test.update(
  { },
  { $unset: { author: "", price: 0 } }
)
db.test.drop()

db.test.insert([
  { "title": "Example1", price: 100, dateEntered: new Date(Date.now()) },
  { "title": "Example2", price: 200, dateEntered: new Date(Date.now()) }
])

db.test.update(
  {  },
  { $min: { dateEntered: new Date("2016-07-01") } }
)

Delete

db.collection.remove(
  <query>,
  {
    justOne: <boolean>,
    writeConcern: <document>
  }
)
Parameter Type Description
query document deletion criteria(기준)이다. collection 내의 모든 document를 삭제할 경우, {}를 전달한다.
justOne boolean Option(Default: false) true로 설정하면 하나의 document만 삭제한다. 생략하면 deletion criteria에 매칭하는 document 모두를 삭제한다.
writeConcern document Option. database에 write(insert, update, remove) 처리를 영속화시키기 위한 설정이다. 기본 설정을 사용하려면 이 설정을 생략한다. 자세한 내용은 Write Concern을 참조하기 바란다.
db.books.remove(
  { price: { $gt: 200 } }
)
db.books.remove( { } )
db.books.drop()
use mongodb_example
db.dropDatabase();