nodejs项目实战教程14——nodejs连接MongoDB,实现增删改查

  • 1.nodejs连接mongodb
  • 2.实现增删改查
  • 2.1 查询操作
  • 2.2 增加
  • 2.3 修改
  • 2.4 删除


1.nodejs连接mongodb

1)新建demo17文件夹,npm init -y生成package.json
2) cnpm install mongodb --save,下载mongdb依赖
3)创建app.js,在代码中引用mongdb,建立数据库连接:

// 1.cnpm install mongodb --save
// 2.引入mongodb
const { MongoClient } = require("mongodb");

// 3.定义数据库连接地址,admin是账号,123456是密码
// 如果没有账号密码,const url = 'mongodb://localhost:27017/'
const url = 'mongodb://admin:123456@localhost:27017/'

// 4.定义要操作的数据库
const dbName = 'sheldon'

// 5.实例化MongoClient传入数据库连接地址
const client = new MongoClient(url,{useUnifiedTopology:true})

// 6.连接数据库
client.connect((err)=>{
  if(err){
    console.log(err)
    return
  }
  console.log('连接成功')
  const db = client.db(dbName)
  // 操作数据库完毕后关闭数据库连接
  client.close()
})

nodejs操作mongodb nodejs操作MongoDB的流程_nodejs操作mongodb

2.实现增删改查

nodejs操作mongodb nodejs操作MongoDB的流程_数据库_02


为了方便大家了解接下来的操作,先使用cmd查询数据库sheldon下集合student的记录。

2.1 查询操作

// 1.cnpm install mongodb --save
// 2.引入mongodb
const { MongoClient } = require('mongodb')

// 3.定义数据库连接地址,admin是账号,123456是密码
// 如果没有账号密码,const url = 'mongodb://localhost:27017/'
const url = 'mongodb://admin:123456@localhost:27017/'

// 4.定义要操作的数据库
const dbName = 'sheldon'

// 5.实例化MongoClient传入数据库连接地址
const client = new MongoClient(url, { useUnifiedTopology: true })

// 6.连接数据库
client.connect((err) => {
  if (err) {
    console.log(err)
    return
  }
  console.log('连接成功')
  const db = client.db(dbName)
  // 操作数据库完毕后关闭数据库连接
  // (1)查询
  db.collection('student')
    .find({})
    .toArray((err, data) => {
      console.log(data)
      client.close()
    })
})

nodejs操作mongodb nodejs操作MongoDB的流程_database_03


注意,因为查询是异步操作,所以需要将client.close()放入到回调函数中。

如果需要进行条件查询,比如查询名字是lisi的学生,参考如下语句:

// (1)查询
  db.collection('student')
    .find({ name: 'lisi' })
    .toArray((err, data) => {
      console.log(data)
      client.close()
    })

2.2 增加

(1)增加一条记录
将查询语句注释,加入增加语句

// (2)增加
  db.collection('student').insertOne(
    { name: 'nodejs操作mongodb', age: '12' },
    (err, result) => {
      if (err) {
        console.log(err)
        return
      }
      console.log('增加成功')
      console.log(result)
      client.close()
    }
  )

nodejs操作mongodb nodejs操作MongoDB的流程_database_04


在cmd中查看:

nodejs操作mongodb nodejs操作MongoDB的流程_mongodb_05

(2)增加多条记录

let insertObj = [
    { name: 'nodejs操作mongodb', age: '15' },
    { name: 'zhaoyun', age: '16' },
    { name: 'zhangfei', age: '17' },
  ]
  db.collection('student').insertMany(insertObj, (err, result) => {
    if (err) {
      console.log(err)
      return
    }
    console.log('增加成功')
    console.log(result)
    client.close()
  })

nodejs操作mongodb nodejs操作MongoDB的流程_数据库_06


在cmd中:

nodejs操作mongodb nodejs操作MongoDB的流程_database_07

2.3 修改

(1)修改一条记录

// (3)修改
  db.collection('student').updateOne(
    { name: 'zhaoyun' },
    { $set: { age: 18 } },
    (err, result) => {
      if (err) {
        console.log(err)
        return
      }
      console.log('修改成功')
      console.log(result)
      client.close()
    }
  )

nodejs操作mongodb nodejs操作MongoDB的流程_mongodb_08


在cmd中:

nodejs操作mongodb nodejs操作MongoDB的流程_nodejs_09


(2)修改多条记录

db.collection('student').updateMany(
    { name: 'nodejs操作mongodb' },
    { $set: { age: 21 } },
    (err, result) => {
      if (err) {
        console.log(err)
        return
      }
      console.log('修改成功')
      console.log(result)
      client.close()
    }
  )

nodejs操作mongodb nodejs操作MongoDB的流程_nodejs操作mongodb_10


nodejs操作mongodb nodejs操作MongoDB的流程_nodejs操作mongodb_11

2.4 删除

(1)删除一条记录

db.collection('student').deleteOne({ name: 'zhaoyun' }, (err) => {
    if (err) {
      console.log(err)
      return
    }
    console.log('删除一条数据成功')
    client.close()
  })

nodejs操作mongodb nodejs操作MongoDB的流程_nodejs操作mongodb_12


nodejs操作mongodb nodejs操作MongoDB的流程_nodejs_13


(2)删除多条记录

db.collection('student').deleteMany({ name: 'nodejs操作mongodb' }, (err) => {
    if (err) {
      console.log(err)
      return
    }
    console.log('删除多条数据成功')
    client.close()
  })

nodejs操作mongodb nodejs操作MongoDB的流程_nodejs_14


nodejs操作mongodb nodejs操作MongoDB的流程_mongodb_15