mongoDB之update文档

文档存入数据库以后,就可以使用update方法来修改它。update有两个参数,一个是查询文档,用来找出要更新的文档,另一个是修改器(modifier文档),描述对找到的文档做哪些更改。更新操作是原子的,若是两个更新同时发生,先到达服务器的先执行,接着执行另外一个。所以互有冲突的更新可以火速传递,并不会相互干扰。

一.文档替换

更新最简单的情形就是用一个新的文档替换匹配的文档。这适用于模式结构发生了较大的变化。

  1. {  
  2.         "_id" : ObjectId("503b08dea53a93158463f02e"),  
  3.         "name" : "joe",  
  4.         "friend" : 32,  
  5.         "enemies" : 23  
  6. }  
  7. > var joe = db.users.findOne({"name":"joe"})  
  8. > joe.relationships={"friends":joe.friends,"enemies":joe.enemies};  
  9. { "friends" : undefined, "enemies" : 23 }  
  10. > joe.relationships={"friends":joe.friend,"enemies":joe.enemies};  
  11. { "friends" : 32, "enemies" : 23 }  
  12. > joe.username=joe.name;  
  13. joe  
  14. > delete joe.friends;  
  15. true  
  16. > delete joe.enemies;  
  17. true  
  18. > delete joe.name;  
  19. true  
  20. > db.users.update({"name":"joe"},joe)  
  21. > db.users.findOne();  
  22. {  
  23.         "_id" : ObjectId("503b08dea53a93158463f02e"),  
  24.         "friend" : 32,  
  25.         "relationships" : {  
  26.                 "friends" : 32,  
  27.                 "enemies" : 23  
  28.         },  
  29.         "username" : "joe"  
  30. }  
  31. > delete joe.friend;  
  32. true  
  33. > db.users.update({"name":"joe"},joe)  
  34. > var joe = db.users.findOne({"name":"joe"})  
  35. > db.users.findOne();  
  36. {  
  37.         "_id" : ObjectId("503b08dea53a93158463f02e"),  
  38.         "friend" : 32,  
  39.         "relationships" : {  
  40.                 "friends" : 32,  
  41.                 "enemies" : 23  
  42.         },  
  43.         "username" : "joe"  
  44. }  
二.使用修改器

通常文档只会有一部分要更新。利用原子的更新修改器,可以使得这种部分更新极为高效。更新修改器是种特殊的键,用来指定复杂的更新操作,比如调整、增加或者删除键,还可能是操作数组或者内嵌文档。

1.“$set” 修改器入门

"$set"用来指定一个键的键值,如果这个键不存在,则创建它。这对更新模式或者增加用户定义键来说非常方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值