Skip to content
本页目录

记录Node.js+Mongodb数据库一些常用基本操作方法

新增数据

  • 语法:db.集合名.save(文档)
  • 说明:如果不指定_id字段,save()方法类似于insert()方法。如果指定_id字段,则会更新_id字段的数据
  • 示例1:db.student.save({name:"poi", age:22, gender:1,address:"石家庄", isDelete:0})
  • 示例2:db.student.save({_id:ObjectId("59950962019723fe2a0d8d17"),name:"poi", age:23, gender:1,address:"石家庄", isDelete:0})
javascript
router.post('/setColor', async function (ctx, next) {
  try {
    const Color = mongoose.model('Color')
    let newColor = new Color({ colorValue: ctx.request.body.colorValue })
    await newColor.save().then(() => {
      ctx.body = {
        code: 200,
        message: '颜色值设置成功'
      }
    })
  } catch (error) {
    ctx.body = { code: 500, message: error }
  }

});

删除数据

remove()方法已经过时了,现在官方推荐使用deleteOne()和deleteMany()方法。

deleteMany参数为{}时候删除全部

javascript
await Color.deleteMany({})

删除指定数据

javascript
db.inventory.deleteMany({ status : "A" })

数据查询

查询可能是我们用的最多的,通常有find、findOne、findById(参数是数据库默认生成的_id)

  • findOne({ name: ”张三” })查询,返回的只会是第一个张三
  • find({ name: ”张三” })查询的话,就会返回所有张三了
javascript
router.get('/getColor', async function (ctx, next) {
  try {
    const Color = mongoose.model('Color')
    await Color.find({}, function (err, res) { // {}为查询所有
      ctx.body = {
        code: 200,
        data: res
      }
    }).sort({_id:-1}); // 根据_id字段进行倒叙返回,默认1
  } catch (error) {
    ctx.body = { code: 500, message: error }
  }

});

数据更新

常用的有update、findByIdAndUpdate(参数是数据库默认生成的_id)

  • 参数说明:
  • query:update的查询条件,类似于sql里update语句内where后面的内容
  • update:update的对象和一些更新的操作符($set,$inc)等,$set直接更新,$inc在原有的基础上累加后更新
  • upset:可选,如果不存在update的记录,是否当新数据插入,true为插入,False为不插入,默认为false
  • multi:可选,mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就按照条件查找出来的数据全部更新
javascript
await User.update({userName:'小名同学'},{userName:'QQ糖果'},function(err, res){
  console.log('更新数据,欧耶',err,res)
});
javascript
await User.findByIdAndUpdate('5d2da91b76accfce15fdfbfe', {userName:'修改id为5d2dxxxx的数据属性userName'}, function(err, res) {
  if (err) {
    console.log(err);
  } else {
    console.log(res);
  }
});

查询条件操作符

作用:条件操作符用于比较两个表达式并从Mongodb集合中获取数据

大于 - $gt

javascript
语法:db.集合名.find({<key>:{$gt:<value>}})
示例:db.student.find({age:{$gt:20}})

大于等于 - $gte

javascript
语法:db.集合名.find({<key>:{$gte:<value>}})

小于 - $lt

javascript
语法:db.集合名.find({<key>:{$lt:<value>}})

小于等于 - $lte

javascript
语法:db.集合名.find({<key>:{$lte:<value>}})

大于等于 和 小于等于 - $gte 和 $lte

javascript
语法:db.集合名.find({<key>:{$gte:<value>,$lte:<value>}})

等于 - :

javascript
语法:db.集合名.find({<key>:<value>})

使用_id进行查询

javascript
语法:db.student.find({"_id":ObjectId("id值")})
示例:db.student.find({"_id":ObjectId("5995084b019723fe2a0d8d14")})

查询某个结果集的数据条数

javascript
db.student.find().count()

查询某个字段的值当中是否包含另一个值

javascript
示例:db.student.find({name:/ile/})

查询某个字段的值是否以另一个值开头

javascript
示例:db.student.find({name:/^li/})

limit、skip

  • limit():读取指定数量的数据记录,db.student.find().limit(3)
  • skip():跳过指定数量的数据,db.student.find().skip(3)
  • skip与limit联合使用,通常用这种方式来实现分页功能,示例:db.student.find().skip(3).limit(3)

数据排序

  • 语法:db.集合名.find().sort({:1|-1})
  • 示例:db.student.find().sort({age:1})
  • 注意:1表示升序,-1表示降序(如果用参数_id,最新的在最前面)

关联查询

可以了解下:$lookup,aggregate

小结

node最大的优势就是和js完美无缝对接,通过js对数据的操作也能达到一些我们想要的目的,这点很棒。