>>分享Web前端开发技术,并对孙卫琴的《精通Vue.js:Web前端开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 16064 个阅读者 刷新本主题
 * 贴子主题:  Node.js操纵Mongodb数据据 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2024-02-18 02:46:48     消息  查看  搜索  好友  邮件  复制  引用


MongoDB 是一个基于分布式文件存储的数据库
注意,下面介绍的是 node.js 操作 mongodb 数据库

安装mongodb

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

连接数据库
[code[
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 };[/code]使用 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{
//删除成功
}
});

程序猿的技术大观园:www.javathinker.net
网站系统异常


系统异常信息
Request URL: http://www.javathinker.net/WEB-INF/lybbs/jsp/topic.jsp?postID=3729

java.lang.NullPointerException

如果你不知道错误发生的原因,请把上面完整的信息提交给本站管理人员