MongoDB是一个灵活的通用文档数据库,非常适合现代应用。 Node.js是一个常用的JavaScript运行时,通常用于构建Web服务器。开发者可以使用这两项技术,以及MongoDB Atlas(一个完全托管的多云数据库服务),快速创建现代应用。
在本文中,你将学习以下内容
MongoDB和Node.js长期以来一直很好地协同工作,并广泛应用于许多流行的技术堆栈中,包括MEAN堆栈(MongoDB, Express.js, AngularJS, 和 Node.js)以及更近期的MERN堆栈(MongoDB, Express.js, React.js, 和 Node.js)。
MongoDB Node.js驱动程序使开发者能够在Node.js脚本中轻松直观地与MongoDB交互——节省时间并提高生产力。
在本节中,我们将介绍如何设置一个连接到MongoDB数据库的Node.js脚本。
在开始之前,请确保您已完成以下几个先决步骤。
npm install mongodb
完成先决条件后,您就可以开始编码了!
您可以使用MongoClient连接到MongoDB数据库。在新Node.js脚本中导入MongoClient
const { MongoClient } = require('mongodb');
然后通过传递您的连接URI来创建一个MongoClient实例。有关如何找到您的连接URI以及确保您的Atlas数据库已准备好连接的更多信息,请参阅官方MongoDB关于连接到集群的文档。
const client = new MongoClient(yourConnectionURI);
现在您已准备好建立连接
await client.connect();
这是建立连接的基本步骤。有关如何从Node.js脚本连接到MongoDB数据库的更详细信息,请参阅使用Node.js连接到MongoDB数据库。
要从Node.js脚本开始使用MongoDB,您应该了解MongoDB如何存储数据以及您可以使用的基本方法来查询数据。以下将涵盖这两个主题。
MongoDB以BSON文档的形式存储数据。BSON是JSON(JavaScript对象表示法)的二进制表示。
文档的结构类似于JavaScript对象,以字段-值对的形式存储信息。每个文档都必须有一个_id字段。_id字段中的值必须对于集合中的每个文档都是唯一的。
文档通常包含关于一个对象的信息以及将与该对象一起查询的任何信息。相关的文档分组在集合中。相关的集合存储在数据库中。
MongoDB Node.js驱动程序提供各种方法来帮助您查询数据。这些方法被称为CRUD操作(创建、读取、更新和删除)。
使用insertOne()创建一个新的文档。insertOne()只有一个必需参数:要插入的文档。如果文档不包括名为_id的字段,MongoDB Node.js驱动程序将自动添加一个。
要创建多个文档,请使用insertMany()。您必须传递给insertMany()的唯一参数是要插入的文档数组。
insertOne()和insertMany()都允许您传递可选设置。对于insertMany()来说,值得注意的是布尔值ordered。如果ordered设置为true且插入失败,则剩余的插入将不会执行。如果ordered设置为false且插入失败,则剩余的插入将执行。有关更多信息,请参阅官方文档。
要从数据库检索单个文档,请使用findOne()。findOne()要求您传递一个查询对象。查询可以包含零个或多个属性。
要从数据库检索多个文档,请使用find()。与findOne()一样,find()要求您传递一个包含零个或多个属性的查询对象。find()返回一个游标,您可以使用它来遍历结果。
当调用findOne()和find()时,您都可以传递可选设置。一个有用的选项是投影,允许您显式排除或包含查询返回的字段。
当您想更新单个文档时,请使用updateOne()。updateOne()有两个必需的参数:一个过滤器对象,用于指示应更新的文档,以及一个更新对象,用于指示应应用于文档的更新操作。
要更新多个文档,可以使用updateMany()。updateMany()的必需参数与updateOne()相同:一个过滤器对象和一个更新对象。
updateOne()和updateMany()都允许您在调用时传递可选设置。upsert是您可以传递的选项之一。当upsert设置为true时,如果没有文档匹配查询,将创建一个新文档。upsert非常有用,因为它允许您将多个操作组合成一个:检查文档是否存在,然后如果存在则更新文档,如果不存在则创建新文档。
要删除单个文档,请使用deleteOne()。指示要删除的文档的过滤器对象是唯一必需的参数。
当您想要删除多个文档时,请使用deleteMany()。与deleteOne()一样,唯一必需的参数是过滤器对象。
deleteOne()和deleteMany()也允许您传递可选设置。有关更多信息,请参阅官方文档。
现在您已经了解了从Node.js脚本中查询存储在MongoDB数据库中的数据的基本知识。有关如何在Node.js脚本中执行CRUD操作的更详细信息,请参阅MongoDB和Node.js教程 - CRUD操作。
MongoDB Node.js驱动程序使使用Node.js与MongoDB无缝体验成为可能。驱动程序自动将JavaScript对象映射到BSON文档,这意味着开发人员可以轻松地处理他们的数据。
想了解更多关于使用MongoDB与Node.js的知识吗?
请参阅以下资源
如果您对MongoDB有任何疑问,请加入MongoDB社区。