如何在Node.js中使用MongoDB
在本教程中,我將向您展示如何從Node.js與MongoDB數據庫進行互動。
如果您對MongoDB不熟悉,請查閱我們的基礎指南,以及如何安裝和使用它的指南:)
我們將使用官方的mongodb
npm套件。如果您已經有一個正在進行中的Node.js項目,可以使用以下命令來安裝它:
1 | npm install mongodb |
如果您從頭開始,請在終端中創建一個新的文件夾,然後運行npm init -y
來啟動新的Node.js項目,然後運行npm install mongodb
命令。
連接到MongoDB
您需要引入mongodb
套件,然後從中獲取MongoClient對象。
1 | const mongo = require('mongodb').MongoClient |
創建MongoDB服務器的URL。如果您在本地使用MongoDB,URL將是類似mongodb://localhost:27017
的形式,因為27017
是默認端口。
1 | const url = 'mongodb://localhost:27017' |
然後使用mongo.connect()
方法來獲取對MongoDB實例客戶端的引用。
1 | mongo.connect(url, { |
現在,您可以使用client.db()
方法選擇數據庫。
1 | const db = client.db('kennel') |
創建並獲取集合
您可以使用db.collection()
方法獲取集合。如果集合還不存在,它將被創建。
1 | const collection = db.collection('dogs') |
向集合插入數據
在app.js
中添加以下函數,它使用insertOne()
方法將一個對象添加到dogs
集合中。
1 | collection.insertOne({name: 'Roger'}, (err, result) => { |
您可以使用insertMany()
來添加多個項目,將數組作為第一個參數傳入。
1 | collection.insertMany([{name: 'Togo'}, {name: 'Syd'}], (err, result) => { |
查找所有文檔
使用集合上的find()
方法來獲取添加到集合中的所有文檔。
1 | collection.find().toArray((err, items) => { |
查找特定文檔
將對象傳遞給find()
方法,以根據您需要檢索的條件對集合進行過濾。
1 | collection.find({name: 'Togo'}).toArray((err, items) => { |
如果您知道將只獲取一個元素,則可以跳過將游標轉換為數組的toArray()
操作,直接調用findOne()
。
1 | collection.findOne({name: 'Togo'}, (err, item) => { |
更新現有文檔
使用updateOne()
方法來更新文檔。
1 | collection.updateOne({name: 'Togo'}, {'$set': {'name': 'Togo2'}}, (err, item) => { |
刪除文檔
使用deleteOne()
方法來刪除文檔。
1 | collection.deleteOne({name: 'Togo'}, (err, item) => { |
關閉連接
完成操作後,可以在客戶端對象上調用close()
方法來關閉連接。
1 | client.close() |
使用Promises或Async/await
我使用了上述所有示例來使用回調(callback)語法。此API也支持Promises(承諾)(和Async/await)。
例如,以下代碼:
1 | collection.findOne({name: 'Togo'}, (err, item) => { |
可以使用Promises來改寫:
1 | collection.findOne({name: 'Togo'}) |
或者使用Async/await:
1 | const find = async () => { |
tags: [“MongoDB”, “Node.js”, “npm”, “MongoDB數據庫”, “Node.js項目”, “callback語法”, “Promises”, “Async/await”]