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"用来指定一个键的键值,如果这个键不存在,则创建它。这对更新模式或者增加用户定义键来说非常方便。

你可能感兴趣的:(mongodb,数据库,服务器,文档)