MongoDB 常用的crud操作语句

 更新时间:2021年06月19日 17:17:41   作者:岛上码农  
本篇介绍了 MongoDB 的基本 CRUD 操作,可以看到 MongoDB 的语法极其简洁,而且可以使用链式调用的方式进行操作。操作的参数也很固定,且方法名称很明确,上手来说是很容易的

对于后端大神(小白)来说,每天的工作就是 CRUD,再加上 Control + C 和 Control + V。作为大神(小白),怎么能不懂 CRUD 呢?MongoDB 的 CRUD 相比繁琐的 SQL 语句而言十分简便,显得更为现代化。

创建数据(CREATE)

MongoDB 提供了两种方式创建数据:

db.crud.insert({name: '码农', gender: '男'});
db.crud.save({name: ' 岛上码农', gender: '男'});

save 方法的不同之处在于如果携带有 _id属性的话,就会更新对应数据,否则就是插入新的数据。在 MongoDB 3.2以后新增了两个插入方法:insertOne和insertMany,而 insert 方法已经标记为废弃。

db.crud.insertOne({name: '码农', gender: '男'});
db.crud.insertMany([{name: '岛上码农', gender: '男'},{name: '程序媛', gender: '女'}]);

更新数据(Update)

更新时前面是查询匹配条件,后面是需要更新的数据。

# 给一个码农变性
db.crud.update({name: '码农'}, {name: '码农', gender: '女'});

update 方法默认是找到一条匹配的数据更新,而不是更新全部数据,如果需要更新多条需要在后面增加属性 multi: true。同时,需要注意文档会被新的数据全部替换。

# 给全部码农变性
db.crud.update({name: '码农'}, {name: '码农', gender: '女'}, {multi: true});

MongoDB 3.2版本后增加了 updateOne 和 updateMany 方法分别对应更新一条和多条数据。

# 恢复码农的性别
db.crud.updateOne({name: '码农'}, {$set: {name: '岛上码农', gender: '男'}});
db.crud.updateMany({name: '码农'}, {$set: {name: '岛上码农', gender: '男'}});

在新版的 MongoDB 中,要求updateOne 和 updateMany 必须是原子操作,即必须指定使用 $set来指定更新的字段,以防止误操作覆盖掉整个文档。如果不指定就会报错:the update operation document must contain atomic operators。**推荐更新使用 ****updateOne**和 **updateMany**,更安全也更明确。 如果文档需要被替换,可以使用 replaceOne:

db.crud.replaceOne({name: '岛上码农'}, {name: '程序媛', gender:'女'});

删除(DELETE)

MongoDB 3.2版本后的删除方法为 deleteOne 和 deleteMany,分布对应删除一条和多条匹配的数据。

db.crud.deleteOne({name: '程序媛'});
db.crud.deleteMany({gender: '女'});

在早期的版本中,使用的是 remove 方法,remove如果第二个参数为 true 表示只删除一条匹配的数据。。

db.crud.remove({name: '程序媛'});
db.crud.remove({gender: '女'}, true);

需要特别注意,如果使用的 remove 方法查询参数对象为空,则会删除全部数据,这就要删库跑路的节奏了。

# 慎重操作,谨防删库跑路
db.crud.remove({});

读取数据(READ)

读取数据使用的是 find 或 findOne 方法,其中 find 会返回全部结果,当然也可以使用 limit 限制返回条数。

# 查询全部数据
db.crud.find();
# 只返回2条数据
db.crud.find().limit(2);
# 查询名字为Tom 的数据
db.crud.find({name: 'Tom'});

如果需要美化返回结果,则可以使用pretty()方法。

db.crud.find().limit(2).pretty();

如果要返回某些字段,则可以在后面指定返回的字段,如果要排除 _id 则需要显示指定,其他字段不包含即可,否则会报错:Cannot do exclusion on field gender in inclusion projection。

# 只返回_id和 name 字段
db.crud.find({name: 'Tom'}, {name: 1});
# 不返回_id
db.crud.find({name: 'Tom'}, {_id: 0, name: 1});

以上就是MongoDB 常用的crud语句的详细内容,更多关于MongoDB crud语句的资料请关注脚本之家其它相关文章!

相关文章

  • Centos7 yum安装mongodb实现步骤详解

    Centos7 yum安装mongodb实现步骤详解

    这篇文章主要介绍了Centos7 yum安装mongodb实现步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • MongoDB如何对数组中的元素进行查询详解

    MongoDB如何对数组中的元素进行查询详解

    MongoDB在文档上支持数组,其次数组上可以实现嵌套,以及数组元素也可以文档。所以下面这篇文章主要给大家介绍了关于MongoDB如何对数组中元素进行查询的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • Mongodb 3.2.9开启用户权限认证问题的步骤详解

    Mongodb 3.2.9开启用户权限认证问题的步骤详解

    这篇文章主要给大家介绍了关于Mongodb 3.2.9开启用户权限认证问题的详细步骤,通过开启权限认证,会对大家的Mongodb更加保护的安全些,文中将步骤介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • MongoDB数据库查看慢查询级别以及慢查询日志

    MongoDB数据库查看慢查询级别以及慢查询日志

    最近项目上一直在用mongodb作为数据库,mongodb有他的优势,文档型类json格式存储数据,修改起来更方便,但是最近在用mongodb出现了查询缓慢的问题,这篇文章主要给大家介绍了关于MongoDB数据库查看慢查询级别以及慢查询日志的相关资料,需要的朋友可以参考下
    2023-05-05
  • 深究从MongoDB的ObjectId中获取时间信息

    深究从MongoDB的ObjectId中获取时间信息

    MongoDB默认使用_id字段作为主键,类型为ObjectId。ObjectId的生成有一定的规则,详情可以查看这篇文章MongoDB深究之ObjectId
    2017-03-03
  • MongoDB操作之日期转换方式(string、ISODate、时间戳)

    MongoDB操作之日期转换方式(string、ISODate、时间戳)

    这篇文章主要介绍了MongoDB操作之日期转换方式(string、ISODate、时间戳),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • MongoDB的常用命令汇总(Mongo4.2.8)

    MongoDB的常用命令汇总(Mongo4.2.8)

    这篇文章主要介绍了MongoDB的常用命令汇总(Mongo4.2.8),给大家介绍了集合collection相关、用户相关、数据库相关内容,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • MongoDB凭什么跻身数据库排行前五

    MongoDB凭什么跻身数据库排行前五

    MongoDB以比去年同期超出65.96分的成绩继续雄踞榜单前五,这个增幅在全榜仅次于PostgreSQL的77.99,而其相对于4月份的6.10分的增长也是仅次于微软SQL Server排名全榜第二
    2019-06-06
  • MongoDB 3.0+安全权限访问控制详解

    MongoDB 3.0+安全权限访问控制详解

    MongoDB 3.0 安全权限访问控制,在添加用户上面3.0版本和之前的版本有很大的区别,这里就说明下3.0的添加用户的方法。由于这版本改变的有些大,解决了很久,终于解决,下面把解决的步骤以及思路分享给大家。
    2018-06-06
  • 详解MongoDB中的日志模块

    详解MongoDB中的日志模块

    这篇文章主要介绍了MongoDB中的日志模块的相关资料,帮助大家更好的理解和学习使用MongoDB数据库,感兴趣的朋友可以了解下
    2021-04-04

最新评论