摘要:前言上一篇中初阶系列一用户和权限介绍了用户和权限,这一篇将介绍如何在中进行增删改查。这是初阶系列的第二篇,接下来还有第三篇,借助,更优雅地操作数据。
前言
上一篇中(mongoDB初阶系列一:用户和权限)介绍了用户和权限,这一篇将介绍如何在node中进行增删改查。
准备首先,要在node中使用mongoDB,需要安装MongoDB Driver,命令如下:npm install mongodb --save
github地址:node-mongodb-native
同时,记得开启mongoDB服务。
增下面代码将在数据库demodb中tasks集合里面插入了一条文档,并且在控制台打印出了该文档的id。
</>复制代码
const MongoClient = require("mongodb").MongoClient
const assert = require("assert")
const url = "mongodb://localhost:27017"
const dbName = "demodb"
// 增
MongoClient.connect(url, function(err, client) {
assert.equal(null, err)
console.log("Connected successfully to server")
const db = client.db(dbName)
var tasks = db.collection("tasks") // 没有则创建
tasks.insertOne(
{
"project": "task1",
"description": "task1 description."
},
{safe: true},
function(err, documents) {
if (err) throw err;
console.log(documents.insertedId);
}
);
client.close()
})
运行程序,发现在控制台打印出了如下结果
</>复制代码
Connected successfully to server
5b59d53ae3d895184824586b
这个返回的5b59d53ae3d895184824586b是MongoDB的文档标识符,它是唯一的,它的本质是二进制JSON(即BSON),BSON是MongoDB用来交换数据的主要数据格式,MongoDB服务器用它代替JSON交换数据。大多数情况下,它更节省空间,解析起来也更快。
声明的{safe: true}表明,等数据库操作完成之后,才执行回调回调函数。
注意:这里为了方便,没有开启授权模式,所以,在登录url中不需要用户名和密码也可以在登录随便进行增删改查。但在产品环境请记得务必开启授权模式。
删下面代码将在数据库demodb中tasks集合找到project为task1的这条文档,并删除它。
</>复制代码
// 删
MongoClient.connect(url, function(err, client) {
assert.equal(null, err)
console.log("Connected successfully to server")
const db = client.db(dbName)
var tasks = db.collection("tasks")
tasks.deleteOne(
{
"project": "task1"
},
function(err, result) {
assert.equal(err, null);
assert.equal(1, result.result.n);
console.log("Removed the document");
}
);
client.close()
})
注意:如果tasks集合中有多条project为task1的文档,那么,也只会删除找到的第一天文档。
改下面代码将在数据库demodb中tasks集合找到project为task1的这条文档,并更新它。
</>复制代码
// 改
MongoClient.connect(url, function(err, client) {
assert.equal(null, err)
console.log("Connected successfully to server")
const db = client.db(dbName)
var tasks = db.collection("tasks")
tasks.updateOne(
{
"project": "task1"
},
{ $set: { "project" : "task999" } },
{safe: true},
function(err, result) {
assert.equal(err, null);
assert.equal(1, result.result.n);
console.log("Updated the document");
}
);
client.close()
})
注意:如果在tasks集合没有找到project为task1的文档,程序将会抛出断言错误,如下:
下面代码将在数据库demodb中tasks集合找到所有文档,并打印到控制台。
</>复制代码
// 查
MongoClient.connect(url, function(err, client) {
assert.equal(null, err)
console.log("Connected successfully to server")
const db = client.db(dbName)
var tasks = db.collection("tasks")
tasks.find().toArray((err, docs) => {
console.log(docs)
assert.equal(null, err) // err 不等于null, 则在控制台打印err
// assert.equal(3, docs.length) // 记录不等于3条, 则在控制台打印记录条数
})
client.close()
})
find()方法找到所有文档,toArray()将结果转换成数组形式,运行程序,结果如下:
虽然上面四个小程序略显简单,但是不积跬步,无以至千里,如果你真的掌握了基本的增删改查,那么,掌握复杂的应用也只是时间问题了。
这是mongo初阶系列的第二篇,接下来还有第三篇,借助mongoose,更优雅地操作数据。敬请期待!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/96309.html
摘要:前言上一篇中初阶系列一用户和权限介绍了用户和权限,这一篇将介绍如何在中进行增删改查。这是初阶系列的第二篇,接下来还有第三篇,借助,更优雅地操作数据。 前言 上一篇中(mongoDB初阶系列一:用户和权限)介绍了用户和权限,这一篇将介绍如何在node中进行增删改查。 准备 首先,要在node中使用mongoDB,需要安装MongoDB Driver,命令如下:npm install mo...
摘要:前言上篇初阶系列二中的增删改查中讲解了用驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用更顺畅的操控。查下面这段代码对集合进行搜索,并输出每项任务的唯一和描述,等打印完成后,关闭数据库连接。 前言 上篇 mongoDB初阶系列二:node中的增删改查 中讲解了用node驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用mongoose更顺畅的操...
摘要:前言上篇初阶系列二中的增删改查中讲解了用驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用更顺畅的操控。查下面这段代码对集合进行搜索,并输出每项任务的唯一和描述,等打印完成后,关闭数据库连接。 前言 上篇 mongoDB初阶系列二:node中的增删改查 中讲解了用node驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用mongoose更顺畅的操...
摘要:类比一下你有一个巨型停车场,里边分了不同的停车区集合,这里的,每个停车区可以停很多车下文提到的,相当于每个数据集合里边可以有很多张数据表。 Node.js利用mongoose连接mongodb数据库 Node.js连接mongodb数据库有很多种方法,通过mongoose模块引入是其中的一个方法 代码组织结构 |---|根目录 |---|---|connect.js(mongoose测...
摘要:类比一下你有一个巨型停车场,里边分了不同的停车区集合,这里的,每个停车区可以停很多车下文提到的,相当于每个数据集合里边可以有很多张数据表。 Node.js利用mongoose连接mongodb数据库 Node.js连接mongodb数据库有很多种方法,通过mongoose模块引入是其中的一个方法 代码组织结构 |---|根目录 |---|---|connect.js(mongoose测...
阅读 3024·2021-11-11 16:55
阅读 593·2021-09-27 13:36
阅读 1196·2021-09-22 15:35
阅读 3029·2019-08-30 12:46
阅读 3224·2019-08-26 17:02
阅读 1895·2019-08-26 11:56
阅读 1367·2019-08-26 11:47
阅读 481·2019-08-23 17:01
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要