简介
node-red-contrib-mongodb3
是一个 Node-RED 的 MongoDB3 整合插件,它不仅提供了 MongoDB3 的连接和查询功能,还具备了对流数据的分析和存储能力。本教程将会介绍该插件的主要功能和使用方法,帮助前端开发者快速实现对 MongoDB 数据库的操作。
安装
node-red-contrib-mongodb3
可以通过 npm 进行安装,输入如下命令即可:
npm i node-red-contrib-mongodb3
连接 MongoDB 数据库
在 Node-RED 的编辑器中,首先需要添加 MongoDB 的连接节点。该节点被命名为“MongoDB3”,打开新建流程,按下 Ctrl+Space 快捷键,搜索 MongoDB3 组件,将其拖动至编辑器的空白区域。连接节点的设置包含以下关键信息:
- Server: MongoDB 服务器的连接地址,具体格式为
mongodb://user:password@host:port/dbname
,其中,user:password
为登录 MongoDB 所需的用户名和密码,host:port
为 MongoDB 服务器的 IP 地址和端口号,dbname
为数据库名称。 - Name:该连接的节点名称,用于识别和管理连接。
- Sets:MongoDB 配置集合(如果启用的话)的名称。
连接节点的设置可以在编辑器界面中的设置栏中进行,或者在双击节点以打开 node 配置对话框时进行设置。
插入文档
连接至 MongoDB 之后,就可以在数据库中添加文档了。添加文档需要使用“MongoDB Insert”节点。该节点接收“msg.payload”消息正文,并使用其作为待插入的数据。节点支持以下设置:
- Database:待插入的数据库名称。
- Collection:待插入文档的集合名称。
- Insert Options:文档的插入选项。选项支持自定义,可在“Option”字段中输入键值对进行设置。
节点的输出消息包含以下内容:
- _id:新插入文档的 ID。
- Payload:已插入的文档正文。
下面是一个添加文档的示例:
[{"id":"ba1caff2.be2ff8","type":"mongodb in","z":"be813a50.01ceb","name":"MongoDB Insert","mongodb":"27f60f19.81c1f2","db":"test","collection":"Accounts","x":490,"y":200,"wires":[["c701421.81b7de8"]]},{"id":"2dbc70b.693679c","type":"inject","z":"be813a50.01ceb","name":"","topic":"","payload":"{\"name\": \"Bob\", \"age\": 30}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":240,"y":200,"wires":[["ba1caff2.be2ff8"]]},{"id":"c701421.81b7de8","type":"debug","z":"be813a50.01ceb","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":670,"y":200,"wires":[]},{"id":"27f60f19.81c1f2","type":"mongodb","z":"","hostname":"127.0.0.1","port":"27017","db":"test","name":"mongo1","usetls":false}]
该示例输入了一条 JSON 数据,并将其插入到test
数据库的Accounts
表中。该节点的输出消息包含了文档的 ID,以及文档的 JSON 格式内容。
更新文档
使用“MongoDB Update”节点可以更新 MongoDB 数据库中的文档。该节点需要设置文档的 ID 作为输入消息,以及一个对象作为更新的数据。节点支持如下设置:
- Database:待更新的数据库名称。
- Collection:待更新文档的集合名称。
- Mongo Filter:筛选器,用于查找待更新的文档。
- Update Options:文档的更新选项。选项支持自定义,可在“Options”字段中输入键值对进行设置。
节点输出的消息包含一个与更新文档的结果相关的数据对象。该数据对象包含一个“result”字段,其中的“nModified”属性表示更新操作改变的文档的数量。
下面是一个更新文档的实例。它将查找 age 值为 22 的“test”数据库中的“Accounts”集合中的第一个文档,并将其 age 值更新为 23。
[{"id":"a670b423.f72c1","type":"mongodb in","z":"a87267c.16bbd9","name":"MongoDB Update","mongodb":"64e62f2c.2b80bc","db":"test","collection":"Accounts","operation":"update","x":460,"y":180,"wires":[["362c0eab.e849d4"]]},{"id":"6a4a6f5b.931724","type":"inject","z":"a87267c.16bbd9","name":"","topic":"","payload":"{\"age\": 23}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":180,"wires":[["208e45a2.691714"]]},{"id":"208e45a2.691714","type":"function","z":"a87267c.16bbd9","name":"","func":"msg.collection = \"Accounts\";\nmsg.payload = {\"age\": 23};\nmsg.query = {\"age\": 22};\nmsg.options = {};\nreturn msg;","outputs":1,"noerr":0,"x":310,"y":180,"wires":[["a670b423.f72c1"]]},{"id":"362c0eab.e849d4","type":"debug","z":"a87267c.16bbd9","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"result.nModified","targetType":"msg","x":610,"y":180,"wires":[]},{"id":"64e62f2c.2b80bc","type":"mongodb","z":"","hostname":"127.0.0.1","port":"27017","db":"test","name":"mongo1","usetls":false}]
删除文档
使用“MongoDB delete”节点可以删除 MongoDB 数据库中的文档。该节点需要从输入消息的 ID 中获取要删除的文档的 ID。节点支持如下设置:
- Database:待删除的数据库名称。
- Collection:待删除文档的集合名称。
- Mongo Filter:筛选器,用于查找待删除的文档。
- Delete Options:文档的删除选项。选项支持自定义,可在“Options”字段中输入键值对进行设置。
节点的输出消息包含一个与删除操作相关的数据对象。该数据对象包含一个“result”字段,其中的“deletedCount”属性表示操作删除的文档数量。
下面是一个删除文档的实例。它将查找 age 值为 23 的“test”数据库中的“Accounts”集合中的第一个文档,并删除该文档。
[{"id":"411f8d16.31e66","type":"mongodb out","z":"3e8a9b38.fda2e2","mongodb":"a724317c.649238","name":"MongoDB Delete","collection":"Accounts","operation":"delete","x":710,"y":260,"wires":[]},{"id":"82f6d902.b2a368","type":"function","z":"3e8a9b38.fda2e2","name":"","func":"msg.collection = \"Accounts\";\nmsg.payload = {};\nmsg.query = {\"age\": 23};\nmsg.options = {};\nreturn msg;","outputs":1,"noerr":0,"x":310,"y":260,"wires":[["411f8d16.31e66"]]},{"id":"6818621b.020b88","type":"inject","z":"3e8a9b38.fda2e2","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":170,"y":260,"wires":[["82f6d902.b2a368"]]},{"id":"a724317c.649238","type":"mongodb","z":"","hostname":"127.0.0.1","port":"27017","db":"test","name":"mongo1","usetls":false}]
查询文档
使用“MongoDB In”节点可以轻松地查询 MongoDB 数据库中的文档。该节点可以使用一些标准操作符,例如比较操作符、逻辑操作符等,简化了数据库查询操作。节点的设置包含以下关键信息:
- Database:待查询的数据库名称。
- Collection:待查询文档的集合名称。
- Mongo Query:查询过滤器,用于获取符合特定条件的文档。
- Find Options:文档查询选项,例如:限制记录数、跳过的记录数,工作有效等。查询选项可以在“Option”字段中进行设置。
节点的输出消息包含了找到的符合查询条件的文档的集合。
下面是一个实现简单查询的例子。该示例将查找“test”数据库中“Accounts”集合中年龄大于 30 的文档:
[{"id":"9d5b70ee.3a57f8","type":"inject","z":"73eb1d04.f806d","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":260,"wires":[["ae4750a7.512b28"]]},{"id":"ae4750a7.512b28","type":"mongodb in","z":"73eb1d04.f806d","mongodb":"772fc867.20307","name":"MongoDB Find","database":"test","collection":"Accounts","operation":"find","x":310,"y":260,"wires":[["834e3373.3ae15"]]},{"id":"834e3373.3ae15","type":"debug","z":"73eb1d04.f806d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":510,"y":260,"wires":[]},{"id":"772fc867.20307","type":"mongodb","z":"","hostname":"127.0.0.1","port":"27017","db":"","name":"","usetls":false}]
结论
node-red-contrib-mongodb3
插件是 Node-RED 中一个强大的 MongoDB 数据库连接和操作插件。在本教程中,我们介绍了如何使用该插件连接 MongoDB 数据库、插入、更新、删除、查询文档等操作。希望这些详细的指导可以帮助大家更好地使用该插件,提高前端开发的效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600672523660cf7123b3632a