MongoDB 常用的crud操作语句


Posted in MongoDB onJune 20, 2021
目录
  • 创建数据(CREATE)
  • 更新数据(Update)
  • 删除(DELETE)
  • 读取数据(READ)

对于后端大神(小白)来说,每天的工作就是 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语句的资料请关注三水点靠木其它相关文章!

MongoDB 相关文章推荐
MongoDB balancer的使用详解
Apr 30 MongoDB
MongoDB 常用的crud操作语句
Jun 20 MongoDB
MongoDB orm框架的注意事项及简单使用
Jun 20 MongoDB
详解MongoDB的条件查询和排序
Jun 23 MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 MongoDB
mongodb数据库迁移变更的解决方案
Sep 04 MongoDB
MongoDB日志切割的三种方式总结
Sep 15 MongoDB
centos8安装MongoDB的详细过程
Oct 24 MongoDB
剖析后OpLog订阅MongoDB的数据变更就没那么难了
Feb 24 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
MongoDB修改oplog大小的四种方法
Apr 11 MongoDB
MongoDB使用profile分析慢查询的步骤
Apr 30 #MongoDB
MongoDB balancer的使用详解
Apr 30 #MongoDB
MongoDB数据库的安装步骤
Jun 18 #MongoDB
MongoDB数据库常用的10条操作命令
Jun 18 #MongoDB
MongoDB orm框架的注意事项及简单使用
Jun 20 #MongoDB
详解MongoDB的条件查询和排序
Jun 23 #MongoDB
SpringBoot整合MongoDB的实现步骤
Jun 23 #MongoDB
You might like
php 静态变量与自定义常量的使用方法
2010/01/26 PHP
第三章 php操作符与控制结构代码
2011/12/30 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
PHP获取文件夹内文件数的方法
2015/03/12 PHP
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
js选项卡的实现方法
2015/02/09 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
详解A标签中href=""的几种用法
2017/08/20 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
java遇到微信小程序 "支付验证签名失败" 问题解决
2019/12/22 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
在Django中限制已登录用户的访问的方法
2015/07/23 Python
Python进行数据提取的方法总结
2016/08/22 Python
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
求职简历推荐信范文
2013/12/02 职场文书
《最大的“书”》教学反思
2014/02/14 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python