[MongoDB] MongoDB 기본쿼리

-- MongoDB 2012. 12. 28. 12:59
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
mongo.exe를 실행하여 아래와 같이 쿼리를 테스트하였다.

1. DB선택


test라는 DB를 사용하겠다고 아래와 같이 입력한다.

> use test
switched to db test

실제로 DB가 변경되었는지 확인하기 위해 아래와 같이 입력한다.

> db
test

2. 화면지우기


명령프롬프트와 마찬가지로 화면을 지우기 위해서는 cls를 사용할 수 있다.

> cls

3. 문서 생성하기


먼저 변수에 문서를 하나 할당한다.

> person = { "name" : "neo", "age" : 20, "regdate" : new Date() }
{
"name" : "neo",
"age" : 20,
"regdate" : ISODate("2012-12-27T18:49:12.699Z")
}

> db.person.insert(person)

4. 문서 추가하기


#3처럼 변수를 통해 문서를 생성할 수 있으나, 아래처럼 insert에 바로 입력해도 된다.

> db.person.insert({ "name" : "joe", "age" : 21, "regdate" : new Date() })

5. 이미 생성된 문서에 항목 추가하기


이름이 neo인 문서에 gender 항목 추가

> db.person.update({ name : "neo" }, { $set : { gender : "M" }})

이름이 joe인 문서에 gender 항목 추가

> db.person.update({ name : "joe" }, { $set : { gender : "F" }})

6. 생성된 문서를 조회


> db.person.find()
> db.person.findOne()
> db.person.find({ name : "neo" })
> db.person.find({ name : "neo", $or : [{ age : 20 }, { age : 21 }] });
> db.person.find({ name : "neo", $nor : [{ age : 20 }, { age : 21 }] });
> db.person.find({ age : { $in : [20, 21] }})
> db.person.find({ age : { $nin : [20, 21] }})

특정 항목만 조회 / 특정 항목만 제외하고 조회

> db.person.findOne({ name : "neo" }, { name : 1, regdate : 1 })
{
"_id" : ObjectId("aaaaaaaaaaaaaaaaaaaaa"),
"name" : "neo",
"regdate" : ISODate("2012-12-27T18:49:12.699Z")
}

> db.person.findOne({ name : "neo" }, { name : 0, regdate : 0 })
{
"_id" : ObjectId("aaaaaaaaaaaaaaaaaaaaa"),
"age" : 21,
"gender" : "M"
}

항목의 값이 null인 문서만 조회

> db.person.find({ name : null })
> db.person.find({ name : { $type : 10 }}) // $type = 10이 null 값

조회 시 정렬

- 내림차순 정렬 (DESC)

> db.person.find().sort({ name : 1 }) 

- 오름차순 정렬 (ASC)

> db.person.find().sort({ name : -1 })

제한된 조회

- TOP 2 혹은 LIMIT 0,2 처럼상위 2개만조회

> db.person.find().limit(2)

- LIMIT 2,2 처럼상위 2개를건너 3,4번째만조회

> db.person.find().limit(2).skip(2)

문서의 갯수 확인

> db.person.count()
> db.person.find({ name : "neo" }).count()

문서 중 특정항목이 없는 문서 확인

> db.person.find({ name : { $exists : false } })

나머지값 연산

>db.person.find({ age : { $mod : [5] } }) // mod(age,5) = 0

>db.person.find({ age : { $mod : [5,1] } }) // mod(age,5) = 1


7. 항목의 값을 변경하기


항목의 문자열값을 변경

> db.person.update({ name : "joe" }, { $set : { gender : "M" }})

항목의 숫자값에 가감을 하여 변경

>db.person.update({ name : "neo" }, { $inc : { age : 1 }})

>db.person.update({ name : "neo" }, { $inc : { age : 10 }})

>db.person.update({ name : "neo" }, { $inc : { age : -11 }})


8. 문서지우기


> db.person.remove({ name : "joe" })
> db.person.remove()

0. ETC


$set

문서에항목이있다면항목의값을변경하고, 항목이없다면항목을지정된값으로추가한다.


$inc

숫자형값에만사용할있는제한자로숫자를가감할사용한다.

$maxscan

쿼리조회할최대의문서수를지정한다.


> db.person.find( { } )._addSpecial( "$maxscan", 10 )

> db.person.find( { $query : { }, $maxscan : 10 } )

 

$min

쿼리특정키의값이최소 x까지만조회


> db.person.find().min( { age : 21 } )

 

$max

쿼리특정키의값이최대 x까지만조회


> db.person.find().max( { age : 21 } )

 

$explain

실제로쿼리를수행하지않고쿼리플랜을표시한다.


> db.person.find().explain()

'-- MongoDB' 카테고리의 다른 글

[MongoDB] 조건연산  (0) 2013.01.02
[MongoDB] $Type 연산자의 값  (0) 2012.12.28
[MongoDB] ObjectID 구조  (0) 2012.12.27
[MongoDB] MongoDB 기본요소  (0) 2012.12.27
[MongoDB] MongoDB 핵심기능  (0) 2012.12.21
posted by 어린왕자악꿍