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


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
  Java面向对象编程-->图形用户界面(下)
  JavaWeb开发-->Servlet技术详解(Ⅲ)
  JSP与Hibernate开发-->JPA API的高级用法
  Java网络编程-->用Swing组件展示HTML文档
  精通Spring-->Vue简介
  Vue3开发-->Vue指令
  卫琴姐姐最新制作的Vue3视频教程,强烈推荐!!!
  最新的Vue面试题大全含源码级回答,吊打面试官系列
  javaScript中"=="和"==="运算符的区别
  axios.all()解决并发请求
  加快 Vue 项目的开发速度
  vue实现Word或Excel文档导出的功能,转换文件名乱码或者json...
  Vue经典面试题: Vue.use和Vue.prototype.$xx有血缘关系吗? -
  HTML DOM Li 对象
  JavaScript 正则表达式RegExp 对象
  jQuery UI 范例 - 选择条目(Selectable)
  jQuery UI 如何使用部件库
  CSS3 文本效果
  CSS 伪类
  JSON 数据转换为JavaScript对象
  jQuery Mobile 方向改变事件
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。