티스토리 뷰

콘솔에서 아래순서 똑같이 따라쳐보며 일어나는 현상을 유심히 과찰해봅시다




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 라는것이 있으니 구글링

댓글
댓글쓰기 폼
공지사항
Total
31,313
Today
12
Yesterday
23
링크
«   2018/10   »
  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      
글 보관함