MongoDB的基本使用
特点:
使用BSON存储数据支持相对丰富的查询操作支持索引副本集分片无模式部署简单方便
服务的启动:
MongoDB运行的两种方式启动命令的使用 mongo 127.0.0.1:27017 连接指定ip地址下的27017端口 show dbs 查看数据库 db.users.insert({"username": "Sid"}) 创建一个users的数据表,并且插入数据 show collection 查看当前的数据表 db.users.find() 查找当前数据表的插入数据 db.users.insert({"username": "Zoe","group": "reporter"}); 为users数据表插入数据 b.users.update({"username":"Zoe"}, {$set: {"group":"writer"}}); 查找到username:Zoe,并修改第一条username:Zoe的group的值 db.users.update({"username":"Zoe"}, {$set: {"group":"programmer"}},{multi: true}); 查找到username:Zoe,并修改全部username:Zoe的group的值 db.users.save({"_id": ObjectId("5a2601f0fb38eba7e7b50f9e"),"group":"reporter"}) 通过_id插入group:reportert,和update的区别就是只保存插入的数据,以前的数据全部清除 db.users.remove({"group": "reporter"}) 删除一个group:reporter的数据 db.users.remove({"group": "reporter"},true) 删除全部group:reporter的数据 db.users.remove({}) 删除文档,但是索引还在 db.users.drop() 删除文档和索引
使用Mongoose模块操作MongoDB
模块介绍配置与链接Model与Schema创建文档删除文档简单查询条件语句 Mogsoose:支持强类型模式也支持弱类型模式 Model与Schema: Model:建立node.js中的对象和mongodb中文档对应 的功能,通过操作Model创建删除,修改,查询的mongodb语言的文档Schema:实现mongoose中数据类型和结构的定义,从而在无模式的mongodb下实现模式化的存储 Model.js
var mongoose = require('mongoose');
var uri = 'mongodb://username:password@hostname:port/databasename';
uri = "mongodb://localhost/part9";
mongoose.Promise = global.Promise;
mongoose.connect(uri,{useMongoClient: true});
var BookSchema = mongoose.Schema({
name:String,
author:String,
publishTime:Date
});
mongoose.model('Book', BookSchema);
插入操作:
var mongoose = require('mongoose');
require('./model.js');
var Book = mongoose.model('Book');
var book = new Book({
name:"MEAN Web Development",
author:"Green",
publishTime:new Date()
});
book.author = 'Jim';
book.save(function(err){
console.log('save status:', err ? 'failed' : 'success');
});
查找操作:
var mongoose = require('mongoose');
require('./model.js');
var Book = mongoose.model('Book');
Book.find({},function(err, docs){
if(err){
console.log('err:', err);
return;
}
console.log('result:', docs);
});
查找第一个满足条件的操作:
var mongoose = require('mongoose');
require('./model.js');
var Book = mongoose.model('Book');
Book.findOne({author:"Jim"}, function(err, doc){
if(err){
console.log('err:', err);
return;
}
doc.author = 'Jame';
doc.save();
console.log('findOne result:', doc)
});
删除操作:
var mongoose = require('mongoose');
require('./model.js');
var Book = mongoose.model('Book');
Book.findOne({author: 'Jim'}, function(err, doc){
if(err){
console.log('findOne err:', err);
return;
}
if(doc) {
doc.remove();
}
});
查询操作:
var mongoose = require('mongoose');
require('./model.js');
var Book = mongoose.model('Book');
var cond = {
$or: [
{author: 'Jame'},
{author: 'Jim'}
]
};
Book.find(cond,function(err, docs){
if(err) {
console.log('find by cond err:', err);
return;
}
console.log('cond:', cond, 'result:', docs)
});
在Express项目中使用Mongoose
使用express mongooseExpress创建默认项目,然后下载到本地,在本地mongooseExpress文件夹下新建文件夹models和config在models文件夹下新建user.server.model.js,在config文件夹下新建config.js和mongoose.js在mongooseExpress文件下的route文件夹下user.js进行修改和在mongooseExpress下app.js修改(修改的地方在下面)在mongooseExpress文件夹下使用命令cnpm install安装express和cnpm install mongoose --save安装mongoose然后在mongooseExpress文件夹下命令node bin/www最后Alt+Shift+t新建一个连接,通过命令curl localhost:3000/users/test查看 user.server.model.js:
var mongoose = require('mongoose');
var UserSchema = new mongoose.Schema({
uid: Number,
username: String,
createTime: Date,
loastLogin: Date
});
mongoose.model('User', UserSchema);
config.js:
module.exports = {
mongodb: "mongodb://localhost/part9"
};
mongoose.js:
var mongoose = require('mongoose');
var config = require('./config.js');
module.exports = function(){
mongoose.Promise = global.Promise;
var db = mongoose.connect(config.mongodb,{useMongoClient: true});
require('../models/user.server.model.js');
return db;
}
app.js中引入mongoose:
var mongoose = require('./config/mongoose.js');
var db = mongoose();
user.js中添加的蓝字:
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var User = mongoose.model('User');
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
router.get('/test', function(req, res, next){
var user = new User({
uid: 1,
username: 'Sid'
});
user.save(function(err){
if(err){
res.end('Error');
return next();
}
User.find({}, function(err, docs){
if(err){
res.end("Error");
return next();
}
res.json(docs);
});
})
});
module.exports = router;