Node.js连接MongoDB

一些介绍

mongodb https://www.npmjs.com/package...
github项目地址 https://github.com/mongodb/no...
属于官方提供的mongodb驱动
文档 http://mongodb.github.io/node...
项目主页 http://mongodb.github.io/node...
属于一个轮子,已经造好了

安装mongodb

PS C:\Users\mingm\Desktop\node> npm install mongodb --save
npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\mingm\Desktop\node\package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\mingm\Desktop\node\package.json'
npm WARN node No description
npm WARN node No repository field.
npm WARN node No README data
npm WARN node No license field.+ mongodb@3.1.1
added 7 packages from 5 contributors and audited 7 packages in 108.492s
found 0 vulnerabilitiesPS C:\Users\mingm\Desktop\node>

创建数据库

好吧,因为各种版本的缘故,需要使用新的解析器。所以需要设置options的参数

useNewUrlParser: true

2.0的驱动程序
旧版本不需要。

PS C:\Users\mingm\Desktop\node> node test.js
数据库连接建立
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming";    // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {    // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}console.log("数据库连接建立");db.close();
})

连接以后创建了一个mingming的数据库

> show dbs;
admin   0.000GB
config  0.000GB
local   0.000GB
> use local;
switched to db local
>

查询了一下,还没有,因为没有往里面添加数据

创建集合

即,创建一张表

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming";    // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {    // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}console.log("数据库连接建立");var dbase = db.db('mingming');    // 选择数据库为mingmingdbase.createCollection('site', (err, res) => {    // 创建数据库为mingming下的site集合if(err) {throw err;}console.log('创建集合!');db.close();});
});
PS C:\Users\mingm\Desktop\node> node test.js
数据库连接建立
创建集合!
PS C:\Users\mingm\Desktop\node>

看一下这张表

> show dbs;
admin     0.000GB
config    0.000GB
local     0.000GB
mingming  0.000GB
> use mingming
switched to db mingming
> show ceoolection;
2018-07-31T23:12:55.014+0800 E QUERY    [js] Error: don't know how to show [ceoolection] :
shellHelper.show@src/mongo/shell/utils.js:1043:11
shellHelper@src/mongo/shell/utils.js:755:15
@(shellhelp2):1:1
> show collections;
site
> db.site.find();
>

CURD

插入数据

PS C:\Users\mingm\Desktop\node> node test.js
文档插入成功!
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming";    // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {    // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');var myobj = { name:"mingming", url:"www.iming.info" };dbo.collection('site').insertOne(myobj, (err, res) => {    // mongodb语法 mingming.site.insert(myObj);if(err) {throw err;}console.log("文档插入成功!");db.close();});
});
> db.site.find();
{ "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "www.iming.info" }
{ "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "www.iming.info" }
>

插入多条数据

> db.site.find().pretty();
{"_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"),"name" : "mingming","url" : "www.iming.info"
}
{"_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"),"name" : "mingming","url" : "www.iming.info"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc1"),"name" : "mingming","url" : "www.iming.info","type" : "cn"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc2"),"name" : "google","url" : "www.google.com.hk","type" : "un"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc3"),"name" : "twitter","url" : "www.twitter.com","type" : "un"
}
>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming";    // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {    // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');var myobj = [{name:"mingming", url:"www.iming.info" , type:"cn"},{name:"google", url:"www.google.com.hk", type:"un"},{name:"twitter", url:"www.twitter.com", type:"un"},];dbo.collection('site').insertMany(myobj, (err, res) => {    // mongodb语法 mingming.site.insert(myObj);if(err) {throw err;}console.log("文档插入成功!");db.close();});
});
PS C:\Users\mingm\Desktop\node> node test.js
文档插入成功!
PS C:\Users\mingm\Desktop\node>

查询数据

PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b607e4d5b8ced1c5cb8a7e4,name: 'mingming',url: 'www.iming.info' },{ _id: 5b607e6ee7b6e82d604d5a4d,name: 'mingming',url: 'www.iming.info' },{ _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: 'www.iming.info',type: 'cn' },{ _id: 5b6080037aa38239e46c0dc2,name: 'google',url: 'www.google.com.hk',type: 'un' },{ _id: 5b6080037aa38239e46c0dc3,name: 'twitter',url: 'www.twitter.com',type: 'un' } ]
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming";    // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {    // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');dbo.collection('site').find({}).toArray((err, result) => {    // 使用find()查询完成以后,使用toArray将查询到的数据完成回调if (err) {throw err;}console.log(result);    // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)db.close();});
});;
> db.site.find().pretty();
{"_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"),"name" : "mingming","url" : "www.iming.info"
}
{"_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"),"name" : "mingming","url" : "www.iming.info"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc1"),"name" : "mingming","url" : "www.iming.info","type" : "cn"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc2"),"name" : "google","url" : "www.google.com.hk","type" : "un"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc3"),"name" : "twitter","url" : "www.twitter.com","type" : "un"
}
>

查询指定条件的数据

PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b607e4d5b8ced1c5cb8a7e4,name: 'mingming',url: 'www.iming.info' },{ _id: 5b607e6ee7b6e82d604d5a4d,name: 'mingming',url: 'www.iming.info' },{ _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: 'www.iming.info',type: 'cn' } ]
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming";    // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {    // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');var whereStr = {"name":"mingming"};    // 查询条件dbo.collection('site').find(whereStr).toArray((err, result) => {    // 使用find()查询完成以后,使用toArray将查询到的数据完成回调if (err) {throw err;}console.log(result);    // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)db.close();});
});;

更新数据

PS C:\Users\mingm\Desktop\node> node test.js
文档更新成功
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming";    // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {    // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');var whereStr = {"name":"mingming"};    // 查询条件var updateStr = {$set: {"url": "AmingA"}};dbo.collection('site').updateOne(whereStr, updateStr, (err, result) => {    // 使用find()查询完成以后,使用toArray将查询到的数据完成回调if (err) {throw err;}console.log('文档更新成功');    // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)db.close();});
});;
> db.site.find({"name":"mingming"}).pretty();
{"_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"),"name" : "mingming","url" : "AmingA"
}
{"_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"),"name" : "mingming","url" : "www.iming.info"
}
{"_id" : ObjectId("5b6080037aa38239e46c0dc1"),"name" : "mingming","url" : "www.iming.info","type" : "cn"
}
>

mongodb的更新

> db.site.update({"name":"mingming"}, {$set: {"url":""}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.site.find({"name":"mingming"});
{ "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "" }
{ "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "www.iming.info" }
{ "_id" : ObjectId("5b6080037aa38239e46c0dc1"), "name" : "mingming", "url" : "www.iming.info", "type" : "cn" }
>

更新多条数据

PS C:\Users\mingm\Desktop\node> node test.js
{ n: 3, nModified: 3, ok: 1 }
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming";    // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {    // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');var whereStr = {"name":"mingming"};    // 查询条件var updateStr = {$set: {"url": ""}};dbo.collection('site').updateMany(whereStr, updateStr, (err, result) => {    // 使用find()查询完成以后,使用toArray将查询到的数据完成回调if (err) {throw err;}console.log(result.result);    // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)db.close();});
});;
> db.site.find({"name":"mingming"});
{ "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "" }
{ "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "" }
{ "_id" : ObjectId("5b6080037aa38239e46c0dc1"), "name" : "mingming", "url" : "", "type" : "cn" }
>

删除数据

同样deleteOne和deleteMany()不在阐述

排序

使用sort()完成排序

PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b6080037aa38239e46c0dc2,name: 'google',url: 'www.google.com.hk',type: 'un' },{ _id: 5b6080037aa38239e46c0dc3,name: 'twitter',url: 'www.twitter.com',type: 'un' },{ _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' },{ _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' },{ _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming";    // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {    // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');var mysort = { type:-1 };    // 降序dbo.collection('site').find().sort(mysort).toArray((err, result) => {if (err) {throw err;}console.log(result);    // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)db.close();});
});;

mongodb语法

> db.site.find({}).sort({type:-1});
{ "_id" : ObjectId("5b6080037aa38239e46c0dc2"), "name" : "google", "url" : "www.google.com.hk", "type" : "un" }
{ "_id" : ObjectId("5b6080037aa38239e46c0dc3"), "name" : "twitter", "url" : "www.twitter.com", "type" : "un" }
{ "_id" : ObjectId("5b6080037aa38239e46c0dc1"), "name" : "mingming", "url" : "", "type" : "cn" }
{ "_id" : ObjectId("5b607e4d5b8ced1c5cb8a7e4"), "name" : "mingming", "url" : "" }
{ "_id" : ObjectId("5b607e6ee7b6e82d604d5a4d"), "name" : "mingming", "url" : "" }
>

分页

使用limit,分页和排序使用的统统是通道(一个来自linux的概念)

PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' },{ _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
PS C:\Users\mingm\Desktop\node>

跳过指定条数

PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' },{ _id: 5b6080037aa38239e46c0dc2,name: 'google',url: 'www.google.com.hk',type: 'un' } ]
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming";    // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {    // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');dbo.collection('site').find().skip(2).limit(2).toArray((err, result) => {if (err) {throw err;}console.log(result);    // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)db.close();});
});;

随机读取一条数据

PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b6080037aa38239e46c0dc2,name: 'google',url: 'www.google.com.hk',type: 'un' } ]
[ { _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' } ]
[ { _id: 5b6080037aa38239e46c0dc2,name: 'google',url: 'www.google.com.hk',type: 'un' } ]
[ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
[ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' } ]
[ { _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' } ]
[ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' } ]
[ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
[ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
[ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' } ]
PS C:\Users\mingm\Desktop\node> node test.js
[ { _id: 5b6080037aa38239e46c0dc2,name: 'google',url: 'www.google.com.hk',type: 'un' } ]
[ { _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' } ]
[ { _id: 5b6080037aa38239e46c0dc3,name: 'twitter',url: 'www.twitter.com',type: 'un' } ]
[ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
[ { _id: 5b607e6ee7b6e82d604d5a4d, name: 'mingming', url: '' } ]
[ { _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' } ]
[ { _id: 5b6080037aa38239e46c0dc1,name: 'mingming',url: '',type: 'cn' } ]
[ { _id: 5b607e4d5b8ced1c5cb8a7e4, name: 'mingming', url: '' } ]
[ { _id: 5b6080037aa38239e46c0dc3,name: 'twitter',url: 'www.twitter.com',type: 'un' } ]
[ { _id: 5b6080037aa38239e46c0dc3,name: 'twitter',url: 'www.twitter.com',type: 'un' } ]
PS C:\Users\mingm\Desktop\node>
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/mingming";    // 连接的urlMongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {    // 调用封装好的connect按照url建立和MongoDB之间的连接if (err) {throw err;}var dbo = db.db('mingming');for(var i=0; i<10; i++){dbo.collection('site').aggregate([{$sample: {size:1}}]).toArray((err, result) => {if (err) {throw err;}console.log(result);    // 将回调的结果输出(由于结果是暂时保存在内存中的,确保有足够大的内存保存,或者使用流也可)});};db.close();
});;

使用的同样是管道

博客

www.iming.info

node 连接mongodb 1相关推荐

  1. node 连接mongodb

    Node.js连接MongoDB 一些介绍 mongodb https://www.npmjs.com/package/mongodb github项目地址 https://github.com/mo ...

  2. 使用node连接MongoDB的工具安装及配置

    MongoDB的使用 Mac安装: https://www.cnblogs.com/weixuqin/p/7258000.html MongoDB的可视化工具: https://robomongo.o ...

  3. 跟我一起用node-express搭建一个小项目(node连接mongodb)[三]

    数据库虽然安装并启动成功了,但我们需要连接数据库后才能使用数据库. 怎么才能在 Node.js 中使用 MongoDB 呢? 我们使用官方提供的 node-mongodb-native 驱动模块,打开 ...

  4. 【node】node连接mongodb操作数据库

    1.下载第三方模块mongodb cnpm install mongodb --save 2.检测是否连接成功 1.引入第三方模块mongodb并创建一个客户端const MongoClient = ...

  5. Node连接MySQL并封装其增删查改

    Node连接Mysql 说到node,可能大家会想到MOngoDB作为数据库,这里将会介绍node与mysql的连接,并分享了封装好的实例代码,在项目开发中可直接使用.下一篇博客将会讲node连接Mo ...

  6. Node.js详解(四):连接MongoDB

    文章目录 一.安装MongoDB访问驱动 二.连接数据库 三.添加数据 四.添加多条数据 五.修改数据 六.查询数据 1.查询单条记录 2.查询多条记录 七.删除数据 八.完整示例代码 1.路由 Ap ...

  7. 【Part2】用JS写一个Blog (node + vue + mongoDB)

    [Part1]用JS写一个Blog (node + vue + mongoDB) 上一节前后端项目分别初始化完成,这一小节我就从后端项目开始写.实现mongoDB数据库的连接. 整理后端目录 下面是通 ...

  8. 为一个 iOS 应用编写一个简单的 Node.js/MongoDB Web 服务

    原文链接:https://github.com/nixzhu/dev-blog/blob/master/2014-04-21-write-a-simple-nodejs-mongodb-web-ser ...

  9. node+express+mongodb初体验

    从去年11月份到现在,一直想去学习nodejs,在这段时间体验了gulp.grunt.yeomen,fis,但是对于nodejs深入的去学习,去开发项目总是断断续续. 今天花了一天的时间,去了解整理整 ...

最新文章

  1. VS新建类自动添加版本注释
  2. Redis:事件驱动(IO多路复用)
  3. Codeforces A - Bear and Prime 100(交互题)
  4. 深入理解 MySQL ——锁、事务与并发控制
  5. asp.net MVC 权限设计(续)
  6. 一个老者给年轻人的几个忠告
  7. android windowmanager 无法传递事件_面试常客:Intent 能传递多大 Size 的数据?| 附阿里的建议方案!...
  8. ASP.NET适合做互联网吗,适合做电子商务平台吗?
  9. 识别速度3.6ms/帧!人像抠图、工业质检、遥感识别,用这一个分割模型就够了...
  10. [转载] python string 字符串转换为字典 dict
  11. ESTORE OPENCART 清爽现代主题模板 ABC-0063
  12. C++面向对象程序设计实践——任务与指导书(1)
  13. GRACE数据介绍及下载
  14. 如何在手机上查银行卡号?进来手把手教你!
  15. python聚类系数_NetworkX 计算聚类系数的Python实现
  16. 网工行业里的多面手,数据通信工程师2022年最新系统学习路线整理
  17. html中p元素添加超链接_如何在HTML中添加超链接
  18. 杨震霆(carboy) -传奇人物
  19. HTML5(李炎恢)学习笔记一 ------------- HTML5的概述
  20. 第七天之多态原理探究

热门文章

  1. android 连接蓝牙电子秤_Android实现串口通讯—连接有线电子秤
  2. 杨天宇20190912-2 命令行
  3. 免费python课程排行榜-成长故事|慕课最受欢迎课程排行榜出炉 从此全球蹭课...
  4. map写入文件及从文件读出
  5. 昇腾Atlas200DK学习笔记(一)——环境部署
  6. 国家杰青!“80后”二级教授,任大学副校长!
  7. utran体系结构包括_接入网体系结构
  8. 蓝桥杯等差数列,双阶乘
  9. 【英语笔记】 20-4-4
  10. 反向链接是每位站长天天必需要做的