몽고디비는 컬럼을 정의하지 않아도 된다는 장점을 가지고있는데 이는 무엇이 들어올지 모른다는 단점이 되기도 한다.
ObjectId라는 몽고디비의 자료형으로 고유의 아이디 역할을 한다.
$ mongo
> use nodejs;
switched to db nodejs
> db.users.save({ name: 'james', age: 24, marred: false,
comment: '안녕하세요', createdAt: new Date() });
WriteResult({"nInserted": 1})
> db.users.save({ name: 'micheal', age: 30, married: true,
comment: '안녕하세요. 제임스의 친구입니다.', createdAt: new Date() })
WriteREsult({"nInserted": 1})
관계설정 > 컬렉션간의 관계를 강요하는 제한이 없으므로 직접 ObjectId를 넣어 연결한다.
> db.users.find({ name: 'james', {_id: 1}})
{"_id": objectId('id값...')}
> db.comment.save({ commenter: objectId('id값...'), {comment: '안녕'}})
WriteResult({"nInserted": 1})
> db.users.find({})
모든 유저들 보여준다.
> db.comments.find({})
모든 코멘츠를 보여준다.
두번째 파라미터로 조회할 필드 선택
> db.users.find({}, {_id: 0, name: 1, marrried: 1})
유저들중을 보여주는데 이름과 결혼 필드만 보여준다.
첫번째 인수로 조회 조건 입력 ($gt, $or 같은 조건 연산자를 사용한다.)
> db.users.find({age: {$gt: 30}, married: true}, {_id: 0, name: 1})
나이가 30 이상인 유저의 이름만 보여준다.
> db.users.find({$or: [{age: {$gt: 30} } , {married: false }] },
{_id: 0, name: 1})
나이가 30이상 이거나, 결혼이 false인 사람의 이름을 보여준다.
그 외에도 sort로 정렬, limit으로 다큐먼트 개수 제한, skip으로 건너뛸 다큐먼트 개수를 정할수 있다.
첫번째 인수로 수정 대상을, 두번째 인수로 수정 내용을 제공한다. $set을 붙이지 않으면 다큐먼트 전체가 대체되므로 주의를 해야한다.
db.users.update({name: 'james', {#set: {comment: '바뀐 내용' } } })
WriteResult({"nmatched": 1, "nUpserted": 0, "nModefied: 1"})
결과로는 수정된 개수가 나온다.
> db.users.remove({name: 'james'})
WriteResult({'nRemoved': 1})
성공시 삭제된 개수가 반환된다.
몽고디비 작업을 쉽게 할 수 있도록 도와주는 라이브러리이다.