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 orm框架的注意事项及简单使用
Jun 20 MongoDB
详解MongoDB的条件查询和排序
Jun 23 MongoDB
mongodb清除连接和日志的正确方法分享
Sep 15 MongoDB
MongoDB连接数据库并创建数据等使用方法
Nov 27 MongoDB
SpringBoot 整合mongoDB并自定义连接池的示例代码
Feb 28 MongoDB
mongoDB数据库索引快速入门指南
Mar 23 MongoDB
MongoDB修改oplog大小的四种方法
Apr 11 MongoDB
Centos系统通过Docker安装并搭建MongoDB数据库
Apr 12 MongoDB
MongoDB数据库之添删改查
Apr 26 MongoDB
详解MongoDB排序时内存大小限制与创建索引的注意事项
May 06 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积分兑换接口实例
2015/02/09 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
Python中的yield浅析
2014/06/16 Python
Python中异常重试的解决方案详解
2017/05/05 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
解决pycharm界面不能显示中文的问题
2018/05/23 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
python实现海螺图片的方法示例
2019/05/12 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
Python 防止死锁的方法
2020/07/29 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
党课知识竞赛主持词
2014/04/01 职场文书
难忘的一课教学反思
2014/04/30 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
服务员岗位职责范本
2015/04/09 职场文书
身份证丢失证明
2015/06/19 职场文书