본문 바로가기

프로그래밍/ETC

몽고디비 메모중

$set ( 삽입 혹은 갱신 )

db.users.update({"_id:": ObjectId("~~~")}, {"$set": {"key": value}});


$unset ( 키/값 제거)

db.users.update({"_id:": ObjectId("~~~")}, {"$unset": {"key": 1}});


db.collection.find() // 배열로 뱉음

db.collection.findOne() // 1개의 문서만 뱉음


find, update, remove 모두 제일 첫번째 인자는 criteria(기준)이다.

ex. "name"이 gekim을 변경할때는

db.users.update({"name": "gekim"}, {"$set": ~~~})



$inc (값을 증감 한다. -생성/수정)

db.users.insert({"name": "gekim"});

db.users.update({"name": "gekim"}, {"$inc": { "score": 50}});

{ "_id" : ObjectId("5b88262dfe4e073c7fc9447f"), "name" : "gekim", "score": 50 }


db.users.update({"name": "gekim"}, {"$inc": {"score": 12}});

{ "_id" : ObjectId("5b88262dfe4e073c7fc9447f"), "name" : "gekim" "score": 62 }


db.users.update({"name": "gekim"}, {"$inc": {"score": -60}});

{ "_id" : ObjectId("5b88262dfe4e073c7fc9447f"), "name" : "gekim", "score": 2 }



$push (지정된 키가 존재하면 배열 끝에 추가/생성한뒤 추가)

> db.users.insert({"key": 1})

WriteResult({ "nInserted" : 1 })

> 

> db.users.find()

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1 }

> 

> db.users.insert({"key": 1024})

WriteResult({ "nInserted" : 1 })

> db.users.find()

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1 }

{ "_id" : ObjectId("5b8827fffe4e073c7fc94481"), "key" : 1024 }

> 

> db.users.update({"key": 1}, {$push: {"comments": "a"}}) // create

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> 

> db.users.find()

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1, "comments" : [ "a" ] }

{ "_id" : ObjectId("5b8827fffe4e073c7fc94481"), "key" : 1024 }



> db.users.update({"key": 1}, {$push: {"comments": "seoul"}}) // insert

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> 

> db.users.find()

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1, "comments" : [ "a", "seoul" ] }

{ "_id" : ObjectId("5b8827fffe4e073c7fc94481"), "key" : 1024 }

> 



$ne (조건에 해당되지 않는걸 찾아준다)

> db.users.find()

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1, "comments" : [ "a", "seoul" ] }

{ "_id" : ObjectId("5b8827fffe4e073c7fc94481"), "key" : 1024 }

> 

> db.users.find({"comments": {$ne: "seoul"}})

{ "_id" : ObjectId("5b8827fffe4e073c7fc94481"), "key" : 1024 }

> 



$ne 를 써서 update

> db.users.update({"comments": {$ne: "seoul"}}, {$push: {"comments": "seoul"}})

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.users.find()

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1, "comments" : [ "a", "seoul" ] }

{ "_id" : ObjectId("5b8827fffe4e073c7fc94481"), "key" : 1024, "comments" : [ "seoul" ] }



$addToSet ($ne랑 비슷하지만, 중복키 안들어가게 add to set 만 하는 녀석)

> db.users.update({"key": 1}, {$addToSet: {"comments": "seoul"}})

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

> 

> db.users.find()

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1, "comments" : [ "a", "seoul" ] }

{ "_id" : ObjectId("5b8827fffe4e073c7fc94481"), "key" : 1024, "comments" : [ "seoul" ] }

> 

> db.users.update({"key": 1}, {$addToSet: {"comments": "seoul_korea"}})

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> 

> db.users.find()

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1, "comments" : [ "a", "seoul", "seoul_korea" ] }

{ "_id" : ObjectId("5b8827fffe4e073c7fc94481"), "key" : 1024, "comments" : [ "seoul" ] }

> 



$each ($addToSet과 조합해서 사용 가능)

> db.users.update({"key": 1}, {$addToSet: {"comments": {$each: ["seoul_korea", "seoul", "bangbae", "samsung"] }}})

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> 

> db.users.find()

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1, "comments" : [ "a", "seoul", "seoul_korea", "bangbae", "samsung" ] }



$pop (배열 제거, $pop: {key: 1} 배열의 끝부터 제거, $pop: {key: -1} 배열의 처음부터 제거

> db.users.find()

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1, "comments" : [ "a", "seoul", "seoul_korea", "bangbae", "samsung" ] }


> db.users.update({"key": 1}, {$pop: {comments: -1}})

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> 

> db.users.find({"key": 1})

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1, "comments" : [ "seoul", "seoul_korea", "bangbae", "samsung" ] }

> 

> db.users.update({"key": 1}, {$pop: {comments: 1}})

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> 

> db.users.find({"key": 1})

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1, "comments" : [ "seoul", "seoul_korea", "bangbae" ] }

> 



$pull (주어진 조건에 일치하는 배열 요소 제거)

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1, "comments" : [ "seoul", "seoul_korea", "bangbae"] }

> db.users.update({"key": 1}, {$pull: {comments: "seoul_korea"}})

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> 

> db.users.find({"key": 1})

{ "_id" : ObjectId("5b8827dafe4e073c7fc94480"), "key" : 1, "comments" : [ "seoul", "bangbae" ] }