데이터베이스 관리

1. 데이터베이스 목록 출력

show dbs

2. 사용 데이터베이스 변경

db=db.getSiblingDB('testDB')
use testDB

3. 데이터베이스 생성

use newDB
db.createCollection("newCollection")

4. 데이터베이스 삭제

use newDB
db.dropDatabase()

5. 데이터베이스 복사

db.copyDatabase('customers', 'customers_archive')

컬렉션 관리

1. 컬렉션 목록 출력

use test
show collections

2. 컬렉션 생성

createCollection(name, [option]) options properties - capped, autoIndexID, size, max

use testDB
db.createCollection("newCollection", {capped: false})

3. 컬렉션 삭제

use testDB
show collections
col1 = db.getCollection("newCollection")
col1.drop()
show collections

4. 컬렉션에서 문서 검색

find(query) query 는 {key : value}

use testDB
col1 = db.getCollection("newCollection")
col1.find()
col1.find( { speed: "120mph" } )

5. 컬렉션에 문서 추가

insert( document ) / save( document )

use testDB
col1 = db.getCollection( "newCollection")
col1.find()
col1.insert( { vehicle : "plane" , speed: "480mph" } )
col1.insert( { vehicle : "car" , speed: "120mph" } )
col1.insert( { vehicle : "train" , speed: "220mph" } )
col1.find()

6. 컬렉션에서 문서 삭제

remove(document) or Document 가 없으면 모두 삭제

use testDB
col1 = db.getCollection("newCollection")
col1.find()
col1.remove( { vehicle: "plane" } )
col1.find()
col1.remove()
col1.find()

7. 컬렉션의 문서를 갱신

save(object) or update(query, update, options) $inc는 필드의 값을 증가시키고, $set은 필드의 값을 설정하고, $push는 요소를 배열에 추가한다. 따라서 갱신 객체는 하나의 필드를 증가시키고, 또 다른 필드의 값을 설정하며, 세번째 필드의 이름을 변경

{ $inc: {count:1}, 
$set: {name: "New Name"}, 
$rename: {"nickname": "alias"} }

options 파라미터는 Boolean 값이 multi와 upsert 프로퍼티를 갖는 객체

  1. upsert가 true라면, 문서를 찾을 수 없는 경우 새로운 문서가 생성
  2. multi가 true라면, 질의와 일치하는 모든 문서를 갱신
  3. 그렇지 않은 경우에는 첫번째 문서만 갱신
use testDB
col1 = db.getCollection("newCollection")
col1.find()
col1.update(
{speed: "120mph"}, 
{$set: {speed: "150mph", updated: true}},
{upsert: false, multi: true}
)
col1.save( { "_id" : ObjectId("52a0caf33...ddb"), 
"vehicle" : "plane", "speed": "500mph" } )
col1.find()