티스토리 뷰
콘솔에서 아래순서 똑같이 따라쳐보며 일어나는 현상을 유심히 과찰해봅시다
show dbs // 현존하는 db 목록을 볼 수 있다. 목록중 작업을 원하는것을 선택하려면 use name 을 사용한다
use apnet // 이렇게 현재 목록에 없는것을 선택할 수도 있다.
//-- save 란걸 해보자 ---------------------------------------
var list = [
{"name": "santa", "age": 22},
{"name": "jane", "age": 32},
{"name": "jack", "age": 21},
{"name": "malson", "age": 23},
{"name": "yona", "age": 62},
{"name": "mots", "age": 24},
{"name": "kim", "age": 32},
{"name": "angel", "age": 27},
{"name": "elan", "age": 25},
{"name": "hue", "age": 28},
]; // 자바스크립트 콘솔인 이유로 자바스크립트 문법이 그대로 적용된다
list; // 데이터를 확인해보자. 잘들어가있다.
for(var i in list){db.people.save(list[i]);} // 배열을 루프돌며 기록한다
db.people.find(); // 확인해본다. 잘 들어가있다. list에 없던 "_id" 키가 눈에 띈다. 그곳에 ObjectId("~~~") 라고 있다. 이것은 save되며 부여된 시퀀스키로 보여진다.
db.people.count(); // 10개가 잘 들어가있다.
list; // 데이터를 확인해보자. "_id" 라는 키가 추가되어있다. save 를 하는 과정에서 추가된것으로 보인다
for(var i in list){db.people.save(list[i]);} // 다시한번 배열을 루프돌며 기록한다
db.people.find(); // 확인해본다. 양이 늘어있어야 하는데 그대로다
db.people.count(); // 양도 그대로 10개이다. 이유는 list에는 _id 키가 추가되어 기존에 기록되었던 것을 같은 키에 해당하는것으로 덮어씌워진것이다.
for(var i in list){delete list[i]._id;} // list에서 _id 를 제거하자
list; // 잘 제거된 것 확인
for(var i in list){db.people.save(list[i]);} // 다시한번 배열을 루프돌며 기록한다
db.people.find(); // 확인해본다. 양이 늘어있다.
db.people.count(); // 20개이다
list; // 데이터를 확인해보자. "_id" 라는 키가 또 추가되어있다.
//-- save 했을때 덮어 씌워졌다라는 것을 확인해보기 ---------------------------------------
list[0].name = "santahara"; // 값을 수정하고
db.people.save(list[0]); // save
db.people.count(); // 20개이다
db.people.find(); // 확인해본다. 해당 배열의 _id 에 해당하는 값이 변경된 것을 확인할 수 있다. age는 그대로이지만, 이것은 그대로인것이 아니라 저거 행 자체(몽고디비에서 도큐먼트라고 부름)가 싹 교체된 것이다.
list[0].name = "santahara2"; // 값을 수정하고
db.people.insert(list[0]); // insert 란것을 사용하면 기존에 키가 존재한다면 에러를 내고 수행하지 않는다
db.people.find(); // 그대로인것 확인가능
db.people.count(); // 그대로 20개이다
//-- 행을 싹 변경하지 않는 방법으로 키 하나만 바꾸고싶을 때 ---------------------------------------
db.people.update({_id:list[0]._id}, {$set:{"name": "XXXX"}}); // 첫번째 인자의 조건에 해당하는 행에서 name 키의 밸류만 XXXX로 수정
db.people.find(); // 바뀐것 확인가능
db.people.update({_id:list[0]._id}, {$inc:{"age": -2}}); // inc 로 나이를 낮출수도 있다
db.people.find(); // 바뀐것 확인가능
db.people.update({"name":"jack"}, {$set:{"age": 1000}}); // 현재 jack 이 2개인데 해보자
db.people.find(); // 첫번째 jack 의 age값만 바뀌었다
// 관련해서 UpdateOne, UpdateMany, ReplaceOne, FindAndModify, FindOneAndUpdate, FindOneAndReplace, Upsert 라는것이 있으니 구글링
'컴퓨터 사용 방법' 카테고리의 다른 글
파이썬에서 이미지 프로세싱을 위한 준비 (0) | 2017.01.24 |
---|---|
DB서버 재시작 후 mongodb 구동 스크립트 (0) | 2017.01.13 |
몽고디비 콘솔에서 첫번째 맛보기 (0) | 2017.01.13 |
ubuntu(우분투)에서의 mongodb(몽고디비) server(서버)와 client(클라이언트)의 설치 (0) | 2017.01.13 |
Can't save in background: fork: Cannot allocate memory (0) | 2017.01.08 |
PIP으로 Python 모듈들을 최신버전으로 업데이트 하자 (방법2) (0) | 2017.01.08 |