唯品秀前端博客

每年学一遍node相关的知识,虽然在实际工作中也一直没实质性用上,但也从未想过去真正放弃,总有一种感觉在未来的某一天。它能带我飞翔。特此把之前学的东西这次复习时候整理下,方便查阅,免得每次查百度浪费时间,努力吧少年。

新增数据

  • 语法: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})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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参数为{}时候删除全部

1
await Color.deleteMany({})

删除指定数据

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

数据查询

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

  • findOne({ name: ”张三” })查询,返回的只会是第一个张三
  • find({ name: ”张三” })查询的话,就会返回所有张三了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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,就按照条件查找出来的数据全部更新
1
2
3
await User.update({userName:'小名同学'},{userName:'QQ糖果'},function(err, res){
  console.log('更新数据,欧耶',err,res)
});
1
2
3
4
5
6
7
await User.findByIdAndUpdate('5d2da91b76accfce15fdfbfe', {userName:'修改id为5d2dxxxx的数据属性userName'}, function(err, res) {
  if (err) {
    console.log(err);
  } else {
    console.log(res);
  }
});

查询条件操作符

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

大于 - $gt

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

大于等于 - $gte

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

小于 - $lt

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

小于等于 - $lte

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

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

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

等于 - :

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

使用_id进行查询

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

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

1
db.student.find().count()

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

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

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

1
示例: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对数据的操作也能达到一些我们想要的目的,这点很棒。

本站所有文章、图片、资源等如无特殊说明或标注,均为来自互联网或者站长原创,版权归原作者所有;仅作为个人学习、研究以及欣赏!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:343049466@qq.com
赞(2) 打赏
谢谢你请我吃鸡腿*^_^*

支付宝扫一扫打赏

微信扫一扫打赏

标签:

上一篇:

下一篇:

相关推荐

1 条评论关于"记录Node.js+Mongodb数据库一些常用基本操作方法"

表情

最新评论

  1. Moon
    VIVO Chrome 62.0.3202.84

    涨芝士了,持续关注大佬 :cy: ,希望我是以前的你,你是未来的我 :wx:

  2. 暂无留言哦~~