mongodb

MongoDB 是一个基于分布式文件存储的数据库

注意,下面介绍的是 node.js 操作 mongodb 数据库

Install

npm install mongodb --save
或则
yarn install mongodb --save

连接数据库

import mongodb from "mongodb";

const mongoserver = new mongodb.Server('ip', 27017, {
	//数据库连接失败时自动重连
	"auto_reconnect" : true,
	//设置连接池数量
	"poolSize" : 10
});

const db=new mongodb.Db('test', mongoserver, {
	// 关注写
	// 设置 w = -1  mongodb 1.2 后的强制要求
	w : -1
});

db.open((err)=>{
	if(err){
		console.log(result);
	}else{
		db.close();
		console.log("连接成功");
	}
});
上面的代码执行完后输出了 "连接成功" 就证明连接上数据库了
连接数据库的代码我们需要写成一个模块,让使用的地方直接导入这个模块即可

mongo.js

连接数据库

import mongodb from "mongodb";

const mongoserver = new mongodb.Server('ip', 27017, {
	//数据库连接失败时自动重连
	"auto_reconnect" : true,
	//设置连接池数量
	"poolSize" : 10
});

const db=new mongodb.Db('test', mongoserver, {
	// 关注写
	// 设置 w = -1  mongodb 1.2 后的强制要求
	w : -1
});

function mongo(){
	return new Promise(function(resolve,reject){
		db.open(function(err){
			if(err){
				return reject(err);
			}
			resolve(db);
		});
	});
}

export { mongo };
使用 Promise 解决回调函数,返回一个 promise 对象回去,后面的数据库操作都不用处理回调函数

添加

//导入链接数据库的模块,上面的代码
import { mongo } from "./mongo.js";

mongo()
	// db  : 本次链接的数据库对象
	.then((db)=>{
		// foo : 需要操作的表
		const foo = db.collection("foo");
		let data = {
			"name" : "张三",
			"age" : "22",
			"sex" : "男"
		};
		foo.install(data,(error,result)=>{
			//关闭本次数据链接
			db.close();
			if(error){
				//添加失败
			}else{
				//添加成功,本次添加数据的信息都在 result 对象上
			}
		});
	})

添加数据还有一个方法 save, 相对 install,save 更好用,假如使用 install 插入的数据遇到 id 冲突后会出错,但是 save 会执行修改操作,把数据覆盖上去
import { mongo } from "./mongo.js";
mongo()
	.then((db)=>{
		const foo = db.collection("foo");
		let data = {
			"name" : "张三",
			"age" : "22",
			"sex" : "男"
		};
		// 使用 svae 保存数据
		foo.save(data,(error,result)=>{
			// ....
		});
	})

查询

import { mongo } from "./mongo.js";
mongo()
	.then((db)=>{
		const foo = db.collection("foo");
		// 使用 find 查询当前库下的所有数据
		// 注意要使用 toArray 讲结果转换为数组
		// 所有的查询返回的结果都是一个 array 格式
		foo.find().toArray((error,result)=>{
			//关闭本次数据链接
			db.close();
			if(error){
				//查询失败
			}else{
				//查询成功
				console.log(result);  //打印查询到的数据
			}
		});
	})

条件查询

import { mongo } from "./mongo.js";
mongo()
	.then((db)=>{
		const foo = db.collection("foo");
		let where = {
			"name" : "张三"
		};
		//根据查询条件查询数据
		foo.find(where).toArray((error,result)=>{
			// ...
		});
	})

修改

import { mongo } from "./mongo.js";
mongo()
	.then((db)=>{
		const foo = db.collection("foo");
		let where = {
			"name" : "张三"
		};
		var updateData = {
			$set: {
				"age" : "23"
			}
		};
		//根据查询条件修改数据
		foo.update(where, updateData, (error,result)=>{
			//关闭本次数据链接
			db.close();
			if(error){
				//修改失败
			}else{
				//修改成功
			}
		});

删除

import { mongo } from "./mongo.js";
mongo()
	.then((db)=>{
		const foo = db.collection("foo");
		let where = {
			"name" : "张三"
		};
		//根据查询条件删除数据
		foo.remove(where, (error,result)=>{
			//关闭本次数据链接
			db.close();
			if(error){
				//删除失败
			}else{
				//删除成功
			}
		});