如何將MongoDB與Node.js結合使用

在本教程中,我將向您展示如何與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或異步/等待

我使用打回來句法。該API支持諾言(和異步/等待)。

例如這個

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手冊


更多節點教程: