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数据库常用的10条操作命令
Jun 18 MongoDB
SpringBoot整合MongoDB的实现步骤
Jun 23 MongoDB
MongoDB安装使用并实现Python操作数据库
Jun 28 MongoDB
常用的MongoDB查询语句的示例代码
Jul 25 MongoDB
mongodb数据库迁移变更的解决方案
Sep 04 MongoDB
SpringBoot 整合mongoDB并自定义连接池的示例代码
Feb 28 MongoDB
一次线上mongo慢查询问题排查处理记录
Mar 18 MongoDB
MongoDB数据库部署环境准备及使用介绍
Mar 21 MongoDB
SpringBoot集成MongoDB实现文件上传的步骤
Apr 18 MongoDB
NoSQL优缺点与MongoDB数据库简介
Jun 05 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
Vue实现按钮旋转和移动位置的实例代码
2018/08/09 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
import的本质解析
2017/10/30 Python
python中subprocess批量执行linux命令
2018/04/27 Python
Python 复平面绘图实例
2019/11/21 Python
python requests.get带header
2020/05/05 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
受欢迎的大学生自我评价
2013/12/05 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
小学教研工作制度
2014/01/15 职场文书
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL
SQL Server Agent 服务无法启动
2022/04/20 SQL Server
Python Matplotlib绘制动画的代码详解
2022/05/30 Python
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL