如何将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手册


更多节点教程: