nodejs实践-MongoDB
Contents
1. 特点:
- 使用BSON存储数据
- 支持相对丰富的查询操作
- 支持索引
- 副本集
- 分片
- 无模式
- 部署简单方便
2. 开始使用
-
检查是否安装 which mongod
-
创建目录 mkdir -p /data/db
-
检测磁盘空间是否够用 df -lh
-
启动
当前进程的方法 mongod –dbpath=/data/db –port=27017
守护进程的方法 mongod –dbpath=/data/db –port=27017 –fork –syslog
日志的查看 tail -f /var/log/message 监控文件的修改 指定日志 –log=
结束后台 kill 进程号
运行客户端 mongo 127.0.0.1:27017
show dbs
use part9
db.users.insert({“username”:“Sid”});
show collections
db.users.find()
db.users.insert({“username”:“Zoe”,“group”:“reporter”});
db.users.find().count();
db.users.insert({“username”:“Zoe”,“group”:“programmer”});
ad.users.find({“_id”:ObjectID(“”)})
//条件 更新内容 更新配置
ad.users.update({“username”:“Zoe”},{$set:{“group”:“writer”},{multi:true}});
//未指定 则属性就没了 必须把所有值指定 条件
db.users.save({“_id”:ObjectId(“xxxx”)},“group”:“reporter”);db.users.remove({“group”:“reporter”})
db.users.remove({“group”:“reporter”},true)//第二个参数是单行删除
db.users.remvoe({})//删除全部文档
db.user.drop();//索引和文档都删除
3. 使用Mongoose操作MongoDB
是一种ORM模块,将对象对应为结果
- 安装 cnpm install mongoose
编写 model.js Model 与 Schema
var mongoose = require('mongoose');
var uri = 'mongodb://username:password@hostname:port/databasename';
uri = "mongodb://localhost/part9";
mongoose.connect(uri);
var BookSchema = new mongoose.Schema({
name:String,
author:String,
publichTime:Date
});
mongoose.model('Book',BookSchema);
编写 insert.js
var mongoose = require('mongoose');
require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schemavar book = new Book({
name ="sod",
author:"green",
publishTime: new Date()
});
book.author ='Jim';
book.save(funtion(err){
console.log('save states',err?'failed':'success');
});
编写find.js
var mongoose = require('mongoose');
require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schema
book.find({},funtion(err,docs){
if(err){
console.log('err',err);
return ;
}
console.log('result',docs);
});
编写findone.js
var mongoose = require('mongoose');
require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schema
book.findOne({author:"Jim"},funtion(err,doc){
if(err){
console.log('err',err);
return ;
}
doc.author = 'Jame';
doc.save();
console.log('findOne result',doc);
});
编写remvoe.js
var mongoose = require('mongoose');
require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schema//第一个参数为条件
book.findOne({author:"Jim"},funtion(err,doc){
if(err){
console.log('err',err);
return ;
}
if(doc){
doc.remove();
}
});
编写condition.js
var mongoose = require('mongoose');
require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schema//第一个参数为条件 联合条件var cond = {
$or:[ //or 可以改为and 还有大于小于等操作
{author:"Jane"},
{author:"Jim"}
]
};
book.find(cond,funtion(err,docs){
if(err){
console.log('err',err);
return ;
}
console.log('cond:',cond,'result:',docs)
});
4. 在express中使用,组织数据库相关代码
使用脚手架生成框架
express mongooseExpress
config.js
module.exports ={
mongodb:"mongodb://localhost/part9"
};
编写mongoose.js
var mongoose = require('mongoose');
var config = require('./config.js');
module.exports = function(){
var db = mongoose.connect(config.mongodb);
return db;
}