当前位置: 首页 > 后端技术 > Node.js

MongoDB入门系列二:节点CRUD

时间:2023-04-03 19:54:37 Node.js

前言上一篇文章(MongoDB入门系列一:用户与权限)介绍了用户与权限。本文将介绍如何在node中进行增删改查。准备工作首先,要在node中使用mongoDB,需要安装MongoDBDriver。命令如下:npminstallmongodb--savegithub地址:node-mongodb-native同时记得开启mongoDB服务。添加以下代码将向数据库demodb中的任务集合中插入一个文档,并在控制台上打印出该文档的id。constMongoClient=require('mongodb').MongoClientconstassert=require('assert')consturl='mongodb://localhost:27017'constdbName='demodb'//添加MongoClient.connect(url,function(err,client){assert.equal(null,err)console.log("Connectedsuccessfullytoserver")constdb=client.db(dbName)vartasks=db.collection('tasks')//创建tasks.insertOneifnot({"project":"task1","description":"task1description."},{safe:true},function(err,documents){if(err)throwerr;console.log(documents.insertedId);});client.close()})运行程序,发现控制台打印如下结果成功连接到server5b59d53ae3d895184824586b返回的5b59d53ae3d895184824586b是MongoDB的文档标识,是唯一的,本质是二进制的JSON(即BSON),BSON是MongoDB用来交换数据的主要数据格式,MongoDB服务器用它代替JSON来交换数据。在大多数情况下,它的空间效率更高,解析速度更快。声明的{safe:true}表示直到数据库操作完成才执行回调函数。注意:这里为了方便,没有开启授权模式,所以你可以随意增删改查,不需要在登录url输入用户名和密码。但在生产环境中,请记得开启授权模式。删除以下代码,在数据库demodb中的tasks集合中找到项目为task1的文档,并删除。//deleteMongoClient.connect(url,function(err,client){assert.equal(null,err)console.log("连接成功到服务器")constdb=client.db(dbName)vartasks=db.collection('任务')tasks.deleteOne({"project":"task1"},function(err,result){assert.equal(err,null);assert.equal(1,result.result.n);控制台。log("Removedthedocument");});client.close()})注意:如果tasks集合中有多个项目为task1的文档,则只删除第一天找到的文档。更改如下代码,在数据库demodb中的tasks集合中找到项目为task1的文档,并更新。//更改MongoClient.connect(url,function(err,client){assert.equal(null,err)console.log("已成功连接到服务器")constdb=client.db(dbName)vartasks=db.collection('tasks')tasks.updateOne({"project":"task1"},{$set:{"project":"task999"}},{safe:true},function(err,result){assert.equal(err,null);assert.equal(1,result.result.n);console.log("Updatedthedocument");});client.close()})注意:如果在tasks集合对于task1的文档,程序会抛出断言错误,如下:检查下面的代码,在数据库demodb中找到tasks集合中的所有文档,并打印到控制台。//检查MongoClient.connect(url,function(err,client){assert.equal(null,err)console.log("已成功连接到服务器")constdb=client.db(dbName)vartasks=db.collection('tasks')tasks.find().toArray((err,docs)=>{console.log(docs)assert.equal(null,err)//err不等于null,然后在控制台打印err//assert.equal(3,docs.length)//如果记录不等于3,则在控制台打印记录数})client.close()})find()方法找到所有文档,并且toArray()将结果转化为数组形式运行程序,结果如下:总结以上四个小程序虽然简单了点,但不积步难行,行千里。如果你真的掌握了基本的增删改查,那么掌握复杂的应用也只需要时间。问题。这是mongo初级系列的第二篇,后面还会有第三篇,借助mongoose更优雅的操作数据。敬请关注!