Node.js--使用MongoDB存储数据

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);
插入操作(insert.js):
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');
});
运行结果:


查询操作(find.js):
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);
});
运行结果:


查询第一个满足条件的操作(findOne.js):
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.jsmongoose.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;
运行结果:




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值