在本教程中,我將向您展示如何與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不是函數錯誤