唯品秀前端博客
当前位置: 前端开发 > Node+Koa > 记录Node.js+Mongodb数据库一些常用基本操作方法

每年学一遍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对数据的操作也能达到一些我们想要的目的,这点很棒。

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(2) 打赏
谢谢你请我吃鸡腿*^_^*

支付宝扫一扫打赏

微信扫一扫打赏

标签:

上一篇:

下一篇:

相关推荐

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

最新评论

  1. Moon
    VIVO Chrome 62.0.3202.84

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

  2. 暂无留言哦~~

博客简介

一个关注Web前端开发技术、关注用户体验、坚持更多原创实战教程的个人网站,梦想一旦被付诸行动,就会变得神圣,愿景:成为宇宙中最具有代表性的前端技术类博客。主题源码 

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 276 篇
  • 草稿数目: 0 篇
  • 分类数目: 15 个
  • 独立页面: 7 个
  • 评论总数: 974 条
  • 链接总数: 11 个
  • 标签总数: 474 个
  • 注册用户: 2 人
  • 访问总量: 8,751,212 次
  • 最近更新: 2020年11月25日
服务热线:
 173xxxx7240

 QQ在线交流

 旺旺在线