일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 빅데이타
- 빅데이터
- 주일설교
- WebGL
- Artificial Intelligence
- node.js
- Machine Learning
- 몽고디비
- 딥러닝
- 확률
- Deep learning
- 인공지능
- openCV
- 김양재 목사
- MongoDB
- nodeJS
- 우리들교회
- No SQL
- 빅 데이터
- Big Data
- probability
- 데이터 과학
- R
- c++
- 통계
- 김양재 목사님
- data science
- Statistics
- 김양재
- 빅 데이타
- Today
- Total
Scientific Computing & Data Science
[MongoDB] Update Modifiers / Part 6. - $pop / $pull 본문
[MongoDB] Update Modifiers / Part 6. - $pop / $pull
cinema4dr12 2014. 1. 26. 16:35Written by cinema4d
이번 글에서는 "$pop" modifier와 "$pull" modifier를 통해 DB로부터 아이템을 삭제하는 법에 대해 알아보겠다.
우선 "$pop" modifier는 특정 key의 아이템을 첫번째부터 또는 마지막부터 하나씩 삭제하는 명령어이다. {$pop : {key : 1}}는 array 아이템의 맨 마지막으로부터 하나씩 삭제하며 {$pop : {key : -1}}는 첫번째 아이템부터 하나씩 삭제한다.
다음 예를 통해 자세히 알아보자. 우선 다음 명령어를 통해 아이템을 준비하자.
var user = {"username" : "gchoi", "age" : 37}; db.users.insert(user); db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "aaa@gmail.com"}}); db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "bbb@gmail.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "ccc@yahoo.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "ddd@yahoo.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "eee@yahoo.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "fff@yahoo.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "ggg@yahoo.com"}})
다음과 같이 아이템을 확인할 수 있다.
> db.users.find() { "_id" : ObjectId("52e496754f7969df59f1148c"), "age" : 37, "email" : [ "aaa@gmail.com", "bbb@gmail.com", "ccc@yahoo.com", "ddd@yahoo.com", "eee@yahoo.com", "fff@yahoo.com", "ggg@yahoo.com" ], "username" : "gchoi" }
다음 명령어를 반복적으로 입력하여 아이템이 맨 마지막부터 삭제되는 것을 확인하자.
("$pop"의 key 값이 "1"임에 주목한다.)
> db.users.update({"username" : "gchoi"}, {$pop : {"email" : 1}}) > db.users.find() { "_id" : ObjectId("52e4976b91525ea329493cc2"), "age" : 37, "email" : [ "aaa@gmail.com", "bbb@gmail.com", "ccc@yahoo.com", "ddd@yahoo.com", "eee@yahoo.com", "fff@yahoo.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : 1}}) > db.users.find() { "_id" : ObjectId("52e4976b91525ea329493cc2"), "age" : 37, "email" : [ "aaa@gmail.com", "bbb@gmail.com", "ccc@yahoo.com", "ddd@yahoo.com", "eee@yahoo.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : 1}}) > db.users.find() { "_id" : ObjectId("52e4976b91525ea329493cc2"), "age" : 37, "email" : [ "aaa@gmail.com", "bbb@gmail.com", "ccc@yahoo.com", "ddd@yahoo.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : 1}}) > db.users.find() { "_id" : ObjectId("52e4976b91525ea329493cc2"), "age" : 37, "email" : [ "aaa@gmail.com", "bbb@gmail.com", "ccc@yahoo.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : 1}}) > db.users.find() { "_id" : ObjectId("52e4976b91525ea329493cc2"), "age" : 37, "email" : [ "aaa@gmail.com", "bbb@gmail.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : 1}}) > db.users.find() { "_id" : ObjectId("52e4976b91525ea329493cc2"), "age" : 37, "email" : [ "aaa@gmail.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : 1}}) > db.users.find() { "_id" : ObjectId("52e4976b91525ea329493cc2"), "age" : 37, "email" : [ ], "username" : "gchoi" }
위와 같이 "email" 아이템이 맨 마지막 아이템부터 하나씩 사라지는 것을 확인할 수 있을 것이다.
이번에는 "$pop" key 값을 "-1"로 테스트하여 아이템을 앞에서부터 하나씩 삭제해 보자.
앞서 예와 마찬가지로 아이템을 준비하자. (users 컬렉션 중복을 막기위해 drop() 함수를 이용하여 users 컬렉션을 삭제하였다.)
db.users.drop() var user = {"username" : "gchoi", "age" : 37}; db.users.insert(user); db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "aaa@gmail.com"}}); db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "bbb@gmail.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "ccc@yahoo.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "ddd@yahoo.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "eee@yahoo.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "fff@yahoo.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "ggg@yahoo.com"}})
"$pop" key 값을 "-1"로 하여 반복적으로 실행하여 첫번째 아이템부터 삭제되는 것을 확인해 본다.
> db.users.find() { "_id" : ObjectId("52e4b9274d7acd666141a744"), "age" : 37, "email" : [ "aaa@gmail.com", "bbb@gmail.com", "ccc@yahoo.com", "ddd@yahoo.com", "eee@yahoo.com", "fff@yahoo.com", "ggg@yahoo.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : -1}}) > db.users.find() { "_id" : ObjectId("52e4b9274d7acd666141a744"), "age" : 37, "email" : [ "bbb@gmail.com", "ccc@yahoo.com", "ddd@yahoo.com", "eee@yahoo.com", "fff@yahoo.com", "ggg@yahoo.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : -1}}) > db.users.find() { "_id" : ObjectId("52e4b9274d7acd666141a744"), "age" : 37, "email" : [ "ccc@yahoo.com", "ddd@yahoo.com", "eee@yahoo.com", "fff@yahoo.com", "ggg@yahoo.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : -1}}) > db.users.find() { "_id" : ObjectId("52e4b9274d7acd666141a744"), "age" : 37, "email" : [ "ddd@yahoo.com", "eee@yahoo.com", "fff@yahoo.com", "ggg@yahoo.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : -1}}) > db.users.find() { "_id" : ObjectId("52e4b9274d7acd666141a744"), "age" : 37, "email" : [ "eee@yahoo.com", "fff@yahoo.com", "ggg@yahoo.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : -1}}) > db.users.find() { "_id" : ObjectId("52e4b9274d7acd666141a744"), "age" : 37, "email" : [ "fff@yahoo.com", "ggg@yahoo.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : -1}}) > db.users.find() { "_id" : ObjectId("52e4b9274d7acd666141a744"), "age" : 37, "email" : [ "ggg@yahoo.com" ], "username" : "gchoi" } > db.users.update({"username" : "gchoi"}, {$pop : {"email" : -1}}) > db.users.find() { "_id" : ObjectId("52e4b9274d7acd666141a744"), "age" : 37, "email" : [ ], "username" : "gchoi" }
이번에는 "$pull" modifier를 이용하여 특정 아이템을 삭제해 보도록 하자. 역시 마찬가지로 데이터를 먼저 준비한다.
db.users.drop() var user = {"username" : "gchoi", "age" : 37}; db.users.insert(user); db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "aaa@gmail.com"}}); db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "bbb@gmail.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "ccc@yahoo.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "ddd@yahoo.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "eee@yahoo.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "fff@yahoo.com"}}) db.users.update({"username" : "gchoi"}, {$addToSet : {"email" : "ggg@yahoo.com"}})
"$pull" modifier로부터 "email"의 "ddd@yahoo.com"을 삭제해 보자. 다음 명령어를 입력한다.
db.users.update({"username" : "gchoi"}, {$pull : {"email" : "ddd@yahoo.com"}})
결과를 확인해 보면 "email" 중 "ddd@yahoo.com"이 삭제되었음을 확인할 수 있다.
> db.users.find() { "_id" : ObjectId("52e4be914d7acd666141a746"), "age" : 37, "email" : [ "aaa@gmail.com", "bbb@gmail.com", "ccc@yahoo.com", "ddd@yahoo.com", "eee@yahoo.com", "fff@yahoo.com", "ggg@yahoo.com" ], "username" : "gchoi" }
'Data Science > MongoDB' 카테고리의 다른 글
[MongoDB] Update Modifiers / Part 7. - Upsert (0) | 2014.01.30 |
---|---|
[Data Science / MongoDB] WebSocket과 Mongoose를 이용하여 간단한 채팅 프로그램 개발 (0) | 2014.01.28 |
[MongoDB] Update Modifiers / Part 5. - $addToSet (0) | 2014.01.26 |
[MongoDB] Update Modifiers / Part 4. - $push (0) | 2014.01.25 |
[MongoDB] Application / MongoDB - Node.js 연동하기 (2) | 2014.01.21 |