MongoDB是一種文件導向数据库管理系统,由C++撰寫而成,以此来解决应用程序开发社区中的大量现实问题。
安装mongoose:npm install -g mongoose
mongoose@3.8.20 C:\Users\ucloud01\AppData\Roaming\npm\node_modules\mongoose
├── regexp-clone@0.0.1
├── ms@0.1.0
├── hooks@0.2.1
├── sliced@0.0.5
├── muri@0.3.1
├── mpath@0.1.1
├── mpromise@0.4.3
├── mquery@0.8.0 (debug@0.7.4)
└── mongodb@1.4.12 (readable-stream@1.0.33, kerberos@0.0.4, bson@0.2.16)
express:4.10.6
mongodb:2.6.6
nodejs:0.10.32
连接数据库
修改routes/index.js:
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
/* GET home page. */
router.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
router.get('/connect', function(req, res) {
mongoose.connect("mongodb://localhost/test", function(err) {
if(err) {res.send(err.message);}
res.send("connect success");
});
});
module.exports = router;
运行并访问http://localhost:3000/connect可以看到
connect success的输出
插入数据
修改routes/index.js:
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Cat = mongoose.model('Cat', {
id: Number,
name: String
});
/* GET home page. */
router.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
router.get('/connect', function(req, res) {
mongoose.connect("mongodb://localhost/test", function(err) {
if(err) {res.send(err.message);}
res.send("connect success");
});
});
router.get('/insert', function(req, res) {
var kitty = new Cat({
id: 01,
name: "shawn"
});
kitty.save(function(err, data, numberAffected) {
if (err) {res.send(err)}
var html = '<p> new data is: ' + JSON.stringify(data) + '</p>';
html += '<p>num of data effected is: ' + numberAffected + '</p>';
res.send(html);
});
});
module.exports = router;
访问http://localhost:3000/insert
同时查看数据库内数据:
可以看到效果是新建了一个叫cats的表(文档)并插入了一条数据
查询数据
修改routes/index.js:var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Cat = mongoose.model('Cat', {
id: Number,
name: String
});
/* GET home page. */
router.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
router.get('/connect', function(req, res) {
mongoose.connect("mongodb://localhost/test", function(err) {
if(err) {res.send(err.message);}
res.send("connect success");
});
});
router.get('/save', function(req, res) {
var kitty = new Cat({
id: 01,
name: "shawn"
});
kitty.save(function(err, data, numberAffected) {
if (err) {res.send(err)}
var html = '<p> new data is: ' + JSON.stringify(data) + '</p>';
html += '<p>num of data effected is: ' + numberAffected + '</p>';
res.send(html);
});
});
router.get('/find', function(req, res) {
Cat.find({id: 1},function(err, docs) {
if (err) {res.send(err)}
var html = '<p>data found: ' + JSON.stringify(docs);
res.send(html);
});
});
module.exports = router;
访问http://localhost:3000/find
修改数据
修改routes/index.js:
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Cat = mongoose.model('Cat', {
id: Number,
name: String
});
/* GET home page. */
router.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
router.get('/connect', function(req, res) {
mongoose.connect("mongodb://localhost/test", function(err) {
if(err) {res.send(err.message);}
res.send("connect success");
});
});
router.get('/save', function(req, res) {
var kitty = new Cat({
id: 01,
name: "shawn"
});
kitty.save(function(err, data, numberAffected) {
if (err) {res.send(err)}
var html = '<p> new data is: ' + JSON.stringify(data) + '</p>';
html += '<p>num of data effected is: ' + numberAffected + '</p>';
res.send(html);
});
});
router.get('/find', function(req, res) {
Cat.find({id: 1},function(err, docs) {
if (err) {res.send(err)}
var html = '<p>data found: ' + JSON.stringify(docs);
res.send(html);
});
});
router.get('/update', function(req, res) {
mongoose.connect("mongodb://localhost/test");
Cat.update({id: 1}, {$set:{name: "shawn2"}}, {upsert: true}, function(err, numberEffected, raw) {
if(err) {res.send(err);}
var html = '<p>data after updated: ' + JSON.stringify(raw) + '</p>';
console.log("get /update2");
html = html + '<p>num of data effected :' + numberEffected +'</p>';
res.send(html);
});
});
module.exports = router;
数据库:
删除数据
修改routes/index.js:
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Cat = mongoose.model('Cat', {
id: Number,
name: String
});
/* GET home page. */
router.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
router.get('/connect', function(req, res) {
mongoose.connect("mongodb://localhost/test", function(err) {
if(err) {res.send(err.message);}
res.send("connect success");
});
});
router.get('/save', function(req, res) {
var kitty = new Cat({
id: 01,
name: "shawn"
});
kitty.save(function(err, data, numberAffected) {
if (err) {res.send(err)}
var html = '<p> new data is: ' + JSON.stringify(data) + '</p>';
html += '<p>num of data effected is: ' + numberAffected + '</p>';
res.send(html);
});
});
router.get('/find', function(req, res) {
Cat.find({id: 1},function(err, docs) {
if (err) {res.send(err)}
var html = '<p>data found: ' + JSON.stringify(docs);
res.send(html);
});
});
router.get('/update', function(req, res) {
mongoose.connect("mongodb://localhost/test");
Cat.update({id: 1}, {$set:{name: "shawn2"}}, {upsert: true}, function(err, numberEffected, raw) {
if(err) {res.send(err);}
var html = '<p>data after updated: ' + JSON.stringify(raw) + '</p>';
console.log("get /update2");
html = html + '<p>num of data effected :' + numberEffected +'</p>';
res.send(html);
});
});
router.get('/delete', function(req, res) {
mongoose.connect("mongodb://localhost/test");
Cat.remove ({
id: 1
}, function(err) {
if(err) {res.send(err);}
res.send("delete suncces");
});
});
module.exports = router;
访问:
实际中频繁读写的话连接一次数据库就可以了,因为mongoose是长连接