缘由:使用MongoDB时遇到一些需要查询/更新操作指定某些字段的业务场景

  • 查询和更新指定字段就需要进行简单的筛选和过滤,也能在大数据量时减少查询消耗时间

1. 查询数据库某些指定字段,同时默认返回_id字段

  db.users.find({},{ username: 1})

以上查询为只查询users表中的所有数据的username字段,但每条查询到的记录默认还会返回_id

2. 查询数据库某些指定字段,并不返回_id字段

  db.users.find({},{ username: 1, _id: 0 })

以上查询为只查询并只返回users表中的所有数据的username字段,_id字段也不会返回

语法为db.[collectionName].find({查询器},{筛选器}),通过设置字段的1或0来进行筛选

3. update()方式更新数据库某些记录的某些指定字段,这里遇到了坑,慎用db.[collectionName].update()

  db.users.update({'username':'John'},{ 'age': 24})

以上更新为查找到users表中username为John的记录并更新其age字段值为24;

特别注意:使用update更新会把users表中username为John的记录,除_id的其他字段全部清空,只会保留_id字段和刚刚更新的age字段,所以需要慎用;

因为update这种文档更新方式,会用新的记录直接代替旧记录,所以需要慎用。

语法为db.[collectionName].update({查询器},{修改器})

4. $set方式更新数据库某些记录的某些指定字段

  db.users.update({'username':'John'},{$set:{'age': 24}})

以上更新为查找到users表中username为John的记录并更新其age字段值为24;

$set修改器用来指定一个键值对,如果存在键就进行修改不存在则进行添加。

5. insertOrUpdate更新方式(查询器查出来数据就执行更新操作,查不出来就替换操作)

  db.[collectionName].update({查询器},{修改器},true)

语法:第三个参数设置为true,代表insertOrUpdate,即存在即更新,否则插入该数据。

6. 批量更新方式(因为默认情况下,当查询器查询出多条符合条件的数据时,默认修改第一条数据,不能批量更新)

  db.[collectionName].update({查询器},{修改器},false, true)

语法:添加第四个参数,该参数为true,则批量更新,为false,则更新一条。

7. $inc数字类型修改器

  db.users.update({'username':'John'},{$inc:{'age': 1}})

以上更新为查找到users表中username为John的记录并在其age字段值在原来的数值上进行加一后更新,字段后设置为 -1 则为在原来的数值上减一后更新;

$inc修改器仅用于数字类型字段,他可以为指定的键对应的数字类型的数值进行加减操作。

最新文章

  1. SQL存储过程基础(从基础开始学,加油!)
  2. Duplicate id @+id/imageView, already defined earlier in this layout,android
  3. AngularJs bower install 卡主不动解决办法
  4. IP地址,子网掩码,默认网关
  5. cocos2d-x中false,setSwallowTouches,stopPropagation的区别
  6. Angularjs中使用$location获取url参数时,遇到的坑~~~
  7. Suse系统用户不能登录报错
  8. hdu 1075 What Are You Talking About(字典树)
  9. FZOJ2111:Min Number
  10. quick-cocos2d-x游戏开发【4】——加入文本
  11. RedisTemplate执行Redis脚本
  12. 十分钟搞定 pandas
  13. 即将上线的flume服务器面临的一系列填坑笔记
  14. Solr学习笔记——导入JSON数据
  15. centos-ftp搭建
  16. dRMT: Disaggregated Programmable Switching
  17. Codeforces Round #426 (Div. 2) D The Bakery(线段树 DP)
  18. Codeforces Round #328 (Div. 2) C 数学
  19. Python中的import和from import
  20. C# 获取外网IP和运营商和城市

热门文章

  1. zookeeper集群&伪集群模式部署
  2. git远程仓库Github
  3. Eureka 集群Demo
  4. Linux IO/NFS tunning 性能优化及检测
  5. Flink 自定义触发器
  6. 30道 有趣的 的 JVM 面试题
  7. 很多人不知道的Python 炫技操作:条件语句的写法
  8. 6 个例子教你重构 Python 代码
  9. 初接触matplotlib
  10. C#的TimeSpan