在本教程中,我将向您展示如何与Node.js中的MongoDB数据库进行交互
如果您不熟悉MongoDB的查看我们的指南,了解其基础知识以及如何安装和使用它:)
我们将使用官方mongodb
npm包裹。如果您已经有一个正在处理的Node.js项目,请使用
npm install mongodb
如果从头开始,请使用终端并运行npm init -y
启动一个新的Node.js项目,然后运行npm install mongodb
命令。
连接到MongoDB
您需要mongodb
包,然后从中获取MongoClient对象。
const mongo = require('mongodb').MongoClient
创建一个指向MongoDB服务器的URL。如果您在本地使用MongoDB,则网址将类似于mongodb://localhost:27017
, 作为27017
是默认端口。
const url = 'mongodb://localhost:27017'
然后使用mongo.connect()
获取对MongoDB实例客户端的引用的方法:
mongo.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
}, (err, client) => {
if (err) {
console.error(err)
return
}
//...
})
现在,您可以使用client.db()
方法:
const db = client.db('kennel')
创建并获取集合
您可以使用db.collection()
方法。如果该集合尚不存在,则创建它。
const collection = db.collection('dogs')
将数据插入到文档集合中
将以下功能添加到app.js中,该功能使用insertOne()
添加对象的方法dogs
收藏。
collection.insertOne({name: 'Roger'}, (err, result) => {
})
您可以使用添加多个项目insertMany()
,将数组作为第一个参数传递:
collection.insertMany([{name: 'Togo'}, {name: 'Syd'}], (err, result) => {
})
查找所有文件
使用find()
集合上的方法以获取添加到集合中的所有文档:
collection.find().toArray((err, items) => {
console.log(items)
})
查找特定文件
将对象传递给find()
用于根据需要检索的内容过滤集合的方法:
collection.find({name: 'Togo'}).toArray((err, items) => {
console.log(items)
})
如果您知道将要获得一个要素,则可以跳过toArray()
通过调用来转换光标findOne()
:
collection.findOne({name: 'Togo'}, (err, item) => {
console.log(item)
})
更新现有文档
使用updateOne()
更新文档的方法:
collection.updateOne({name: 'Togo'}, {'$set': {'name': 'Togo2'}}, (err, item) => {
console.log(item)
})
删除文件
使用deleteOne()
删除文档的方法:
collection.deleteOne({name: 'Togo'}, (err, item) => {
console.log(item)
})
断开连接
完成操作后,您可以致电close()
客户端对象上的方法:
client.close()
使用Promise或异步/等待
例如这个
collection.findOne({name: 'Togo'}, (err, item) => {
console.log(item)
})
可以与promises一起使用:
collection.findOne({name: 'Togo'})
.then(item => {
console.log(item)
})
.catch(err => {
console.error(err)
})
或异步/等待:
const find = async () => {
try {
const item = await collection.findOne({name: 'Togo'})
} catch(err => {
console.error(err)
})
}
find()
免费下载我的Node.js手册
更多节点教程:
- npm软件包管理器简介
- Node.js简介
- 使用Axios的HTTP请求
- 在哪里托管Node.js应用
- 使用Node.js与Google Analytics(分析)API进行交互
- npx节点包运行器
- package.json指南
- npm在哪里安装软件包?
- 如何更新Node.js
- 如何使用或执行使用npm安装的软件包
- package-lock.json文件
- 使用npm的语义版本控制
- 您是否应该将node_modules文件夹提交到Git?
- 将所有Node依赖项更新到最新版本
- 使用Node.js解析JSON
- 查找npm软件包的安装版本
- Node.js流
- 安装较旧版本的npm软件包
- 在Node中获取当前文件夹
- 如何在Node中记录对象
- 使用导出从Node文件公开功能
- 节点和浏览器之间的区别
- 使用Node发出HTTP POST请求
- 使用Node获取HTTP请求主体数据
- 节点缓冲区
- Node.js的简要历史
- 如何安装Node.js
- 使用Node您需要知道多少JavaScript?
- 如何使用Node.js REPL
- 节点,从命令行接受参数
- 使用Node输出到命令行
- 接受来自Node中命令行的输入
- 使用`npm uninstall`来卸载npm软件包。
- npm全局或本地软件包
- npm依赖项和devDependencies
- Node.js事件循环
- 了解process.nextTick()
- 了解setImmediate()
- 节点事件发射器
- 建立一个HTTP服务器
- 使用Node发出HTTP请求
- Node fs模块
- 使用Axios的Node中的HTTP请求
- 使用Node读取文件
- 节点文件路径
- 用Node写入文件
- 节点文件统计
- 在Node中使用文件描述符
- 在Node中使用文件夹
- 节点路径模块
- Node http模块
- 将WebSockets与Node.js结合使用
- 使用MySQL和Node的基础知识
- Node.js中的错误处理
- 哈巴狗指南
- 如何从Node.js读取环境变量
- 如何从Node.js程序退出
- Node os模块
- 节点事件模块
- 节点,开发与生产之间的区别
- 如何检查Node.js中是否存在文件
- 如何在Node.js中创建一个空文件
- 如何使用Node.js删除文件
- 如何使用Node.js获取文件的最后更新日期
- 如何在JavaScript中确定日期是否为今天
- 如何将JSON对象写入Node.js中的文件
- 为什么要在下一个项目中使用Node.js?
- 从任何文件夹运行Web服务器
- 如何将MongoDB与Node.js结合使用
- 使用Chrome DevTools调试Node.js应用
- 什么是pnpm?
- Node.js运行时v8选项列表
- 使用npm时如何解决“缺少写访问权限”错误
- 如何在Node.js中启用ES模块
- 如何使用Node.js生成子进程
- 如何在Express中同时获取已解析的正文和原始正文
- 如何在Node.js中处理文件上传
- 节点模块中的对等依赖性是什么?
- 如何使用Node.js编写CSV文件
- 如何使用Node.js读取CSV文件
- 节点核心模块
- 使用Node.js一次增加多个文件夹的数量
- 如何将画布打印到数据URL
- 如何使用Node.js和Canvas创建和保存图像
- 如何使用Node.js下载图像
- 如何在Node.js中批量重命名文件
- 如何获取Node中文件夹中所有文件的名称
- 如何使用Promise和基于Node.js回调的等待功能
- 如何在本地测试NPM软件包
- 如何在运行时检查当前的Node.js版本
- 如何使用Sequelize与PostgreSQL交互
- 使用Node.js服务HTML页面
- 如何解决Node.js中的util.pump不是函数错误