MongoDB 를 접속하기 위한 다양한 방법에 대해 알아보자
1. mongodb
- REST API 개발하기 : 와인 저장고 요약 블로깅
- MongoDB Native Driver for Node.js 문서
- 당연히 mongojs 를 사용하는 것보다 복잡하다
2. mongojs
- mongodb native를 wrapping한 모듈
- 설치 : npm install mongojs
- mongoDB에서 컬렉션 만들기
[~/mongodb:nulpulum]./mongo
MongoDB shell version: 2.2.3
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
> show dbs
local (empty)
> use dowonDB
switched to db dowonDB
> db
dowonDB
> db.people.save({_id:1, age:11, name: 'dowon', sex: true});
> db.people.save({_id:2, age:22, name: 'youngsik', sex: true});
> db.people.save({_id:3, age:33, name: 'taeyoung', sex: false});
> show collections
people
system.indexes
- mongojs 코딩
- Mongo Shell 에서 확인
> db.people.find();
{ "_id" : 1, "age" : 11, "name" : "dowon", "sex" : true }
{ "_id" : 2, "age" : 22, "name" : "youngsik", "sex" : true }
{ "_id" : 3, "age" : 33, "name" : "taeyoung", "sex" : false }
{ "_id" : 4, "age" : 27, "name" : "jaein", "sex" : false }
3. mongoose
- 가장 많이 사용한다. MongoDB접속 ODM(Object Document Mapping) MVC framework
- 설치하기 : npm install mongoose
- mongolian 은 mongoose의 light weight 버전이다
- Backbone.js 프레임워크와 유사 : schema = controller 개념으로 사용, model = collections
하기와 같이 schema에서 할 수 있는 일들은 일반 프레임워크의 컨트롤러 즉, 비즈니스 펑션을 제공한다 (참조)
Validators (async and sync)
Defaults
Getters
Setters
Indexes
Middleware
Methods definition
Statics definition
Plugins
pseudo-JOINs
- Schema를 만들 때 사용하는 타입
String
Number
Date
Buffer
Boolean
Mixed
ObjectId
Array
Functional Programming에서 함수를 인자로 넘기고 동일한 로직을 수행한다면, 인자인 함수를 바꿔가면서 동일한 로직을 DRY 하여 사용할 수 있다. 여기서 인자로 넘기는 함수를 Schema라고 생각해 볼 수 있다
- mongoose 코딩
- 결과 : save, find가 비동기로 이루어지기 때문에 이미 전에 save한 (age: 33 도큐먼트) 데이터만 나온다
[nulpulum:~/development/mongoose]node mongoose.js
connection successful...
{ age: 33,
name: 'dowon',
sex: true,
_id: 511f3cb4c6ae3fef03000001,
__v: 0 }
4. mongolian
- Node.js 전용 드라이브
- 향후 다른 layer와 연결하여 개발하려면 mongoose 또는 mongolian/skin중 하나를 선택하여 사용한다
(개인적으로 mongoskin framework이 편리하다)
5. mongoskin
- 설치하기
[nulpulum:~/development/nodejs/node_basic]npm install mongoskin
npm WARN package.json application-name@0.0.1 No README.md file found!
npm http GET https://registry.npmjs.org/mongoskin
npm http GET https://registry.npmjs.org/mongoskin/-/mongoskin-0.5.0.tgz
npm http GET https://registry.npmjs.org/mongodb
npm http GET https://registry.npmjs.org/bson/0.1.8
> bson@0.1.8 install /Users/nulpulum/development/nodejs/node_basic/node_modules/mongoskin/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)
xcode-select: Error: No Xcode is selected. Use xcode-select -switch <path-to-xcode>, or see the xcode-select manpage (man xcode-select) for further information.
mongoskin@0.5.0 node_modules/mongoskin
└── mongodb@1.2.13 (bson@0.1.8)
- 사용하기 : express 코딩
var mongoskin = require('mongoskin');
var db3 = mongoskin.db('localhost:27017/dowonDB?auto_reconnect');
app.get('/person3/list', function(req, res) {
console.log('---start 04----');
db3.collection('people').findOne({name: 'young'}, function (err, users) {
// do something
if(err || !users) throw err;
res.json(users);
});
});
/////////////////////////////////////////
// 결과
[nulpulum:~/development/nodejs/node_basic]curl -i -X GET http://localhost:3000/person3/list
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 90
Date: Sat, 23 Feb 2013 05:54:17 GMT
Connection: keep-alive
{
"age": "31",
"name": "young",
"sex": "true",
"_id": "51282bb231ca135412000001"
<참조>
- Node.js Language Center in MongoDB
'MongoDB > Prototyping' 카테고리의 다른 글
[MongoDB] Index 생성/삭제하기 (0) | 2013.07.27 |
---|---|
[Mongoose] Schema의 Virtual, Method, Pre 테스트 (0) | 2013.07.10 |
[Mongoose] Foreign Key 설정 및 Auto Increment Number 플러그인 (0) | 2013.05.28 |
[MongoDB] mongos 통하여 Sharding 환경 구성하기 (1) (0) | 2013.01.05 |
[MongoDB] Replication and Repica Sets 만들기 (0) | 2013.01.05 |