MongoDB命令行操作

时间:2024-02-16 11:23:02

1 插入操作

 

[plain] view plaincopy
 
  1. 1.1 向user集合中插入两条记录  
  2. > db.user.insert({\'name\':\'Gal Gadot\',\'gender\':\'female\',\'age\':28,\'salary\':11000})  
  3. > db.user.insert({\'name\':\'Mikie Hara\',\'gender\':\'female\',\'age\':26,\'salary\':7000})  
  4.   
  5. 1.2 同样也可以用save完成类似的插入操作  
  6. > db.user.save({\'name\':\'Wentworth Earl Miller\',\'gender\':\'male\',\'age\':41,\'salary\':33000})  

 

2 查找操作

2.1 查找集合中的所有记录

 

[plain] view plaincopy
 
  1. > db.user.find()  
  2. { "_id" : ObjectId("52442736d8947fb501000001"), "name" : "lfqy", "gender" : "male", "age" : 23, "salary" : 15 }  
  3. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  4. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  5. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  6. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13 }  

2.2 查找集合中的符合条件的记录

[plain] view plaincopy
 
  1. (1)单一条件  
  2. a)Exact Equal:  
  3. 查询age为了23的数据  
  4. > db.user.find({"age":23})  
  5. { "_id" : ObjectId("52442736d8947fb501000001"), "name" : "lfqy", "gender" : "male", "age" : 23, "salary" : 15 }  
  6. b)Great Than:  
  7. 查询salary大于5000的数据  
  8. > db.user.find({salary:{$gt:5000}})  
  9. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  10. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  11. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  12. c)Fuzzy Match  
  13. 查询name中包含\'a\'的数据  
  14. > db.user.find({name:/a/})  
  15. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  16. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  17. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  18. 查询name以G打头的数据  
  19. > db.user.find({name:/^G/})  
  20. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  21.   
  22. (2)多条件"与"  
  23. 查询age小于30,salary大于6000的数据  
  24. > db.user.find({age:{$lt:30},salary:{$gt:6000}})  
  25. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  26. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  27. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  28.   
  29. (3)多条件"或"  
  30. 查询age小于25,或者salary大于10000的记录  
  31. > db.user.find({$or:[{salary:{$gt:10000}},{age:{$lt:25}}]})  
  32. { "_id" : ObjectId("52442736d8947fb501000001"), "name" : "lfqy", "gender" : "male", "age" : 23, "salary" : 15 }  
  33. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  34. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  35. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  36.   
  37. (4)不等于查询  
  38. 查询年龄不等于23的记录(这里返回结果中,会包含没有年龄字段的记录)  
  39. > db.user.find({"age":{ $ne: 23}})  
  40. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11050 }  
  41. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7050 }  
  42. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  43. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  44. { "_id" : ObjectId("524562d681c83a5bf26fc286"), "gender" : "female1", "salary" : 50 }  
  45. { "_id" : ObjectId("524563e881c83a5bf26fc287"), "gender" : "x" }  
  46. { "_id" : ObjectId("5245648081c83a5bf26fc288"), "gender" : "x" }  
  47. { "_id" : ObjectId("5245648e81c83a5bf26fc289"), "age" : "x" }  
  48. { "_id" : ObjectId("524564c181c83a5bf26fc28a"), "age" : "x", "gender" : 4 }  

2.3 查询第一条记录
将上面的find替换为findOne()可以查找符合条件的第一条记录。

[plain] view plaincopy
 
  1. 将上面的find替换为findOne()可以查找符合条件的第一条记录。  
  2. > db.user.findOne({$or:[{salary:{$gt:10000}},{age:{$lt:25}}]})  
  3. {  
  4.     "_id" : ObjectId("52442736d8947fb501000001"),  
  5.     "name" : "lfqy",  
  6.     "gender" : "male",  
  7.     "age" : 23,  
  8.     "salary" : 15  
  9. }  

2.4 查询记录的指定字段

[plain] view plaincopy
 
  1. 查询user集合中所有记录的name,age,salary,sex_orientation字段  
  2. > db.user.find({},{name:1,age:1,salary:1,sex_orientation:true})  
  3. { "_id" : ObjectId("52442736d8947fb501000001"), "name" : "lfqy", "age" : 23, "salary" : 15 }  
  4. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "age" : 28, "salary" : 11000 }  
  5. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "age" : 26, "salary" : 7000 }  
  6. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "age" : 41, "salary" : 33000 }  
  7. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  8. 注意:这里的1表示显示此列的意思,也可以用true表示。  

2.5 查询指定字段的数据,并去重。

[plain] view plaincopy
 
  1. 查询gender字段的数据,并去掉重复数据  
  2. > db.user.distinct(\'gender\')  
  3. [ "male", "female" ]  

2.6 对查询结果集的操作

[plain] view plaincopy
 
  1. (1)Pretty Print  
  2. 为了方便,mongo也提供了pretty print工具,db.collection.pretty()或者是db.collection.forEach(printjson)  
  3. > db.user.find().pretty()  
  4. {  
  5.     "_id" : ObjectId("52442736d8947fb501000001"),  
  6.     "name" : "lfqy",  
  7.     "gender" : "male",  
  8.     "age" : 23,  
  9.     "salary" : 15  
  10. }  
  11. {  
  12.     "_id" : ObjectId("52453cfb25e437dfea8fd4f4"),  
  13.     "name" : "Gal Gadot",  
  14.     "gender" : "female",  
  15.     "age" : 28,  
  16.     "salary" : 11000  
  17. }  
  18. {  
  19.     "_id" : ObjectId("52453d8525e437dfea8fd4f5"),  
  20.     "name" : "Mikie Hara",  
  21.     "gender" : "female",  
  22.     "age" : 26,  
  23.     "salary" : 7000  
  24. }  
  25. {  
  26.     "_id" : ObjectId("52453e2125e437dfea8fd4f6"),  
  27.     "name" : "Wentworth Earl Miller",  
  28.     "gender" : "male",  
  29.     "age" : 41,  
  30.     "salary" : 33000  
  31. }  
  32. {  
  33.     "_id" : ObjectId("52454155d8947fb70d000000"),  
  34.     "name" : "not known",  
  35.     "sex_orientation" : "male",  
  36.     "age" : 13  
  37. }  
  38. (2)指定结果集显示的条目  
  39. a)显示结果集中的前3条记录  
  40. > db.user.find().limit(3)  
  41. { "_id" : ObjectId("52442736d8947fb501000001"), "name" : "lfqy", "gender" : "male", "age" : 23, "salary" : 15 }  
  42. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  43. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  44. b)查询第1条以后的所有数据  
  45. > db.user.find().skip(1)  
  46. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  47. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  48. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  49. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  50. c)对结果集排序  
  51. 升序  
  52. > db.user.find().sort({salary:1})  
  53. { "_id" : ObjectId("52442736d8947fb501000001"), "name" : "lfqy", "gender" : "male", "age" : 23, "salary" : 15 }  
  54. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  55. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  56. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  57. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  58. 降序  
  59. > db.user.find().sort({salary:-1})  
  60. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  61. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  62. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  63. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  64. { "_id" : ObjectId("52442736d8947fb501000001"), "name" : "lfqy", "gender" : "male", "age" : 23, "salary" : 15 }  

2.7 统计查询结果中记录的条数

[plain] view plaincopy
 
  1. (1)统计集合中的所有记录条数  
  2. > db.user.find().count()  
  3. 5  
  4. (2)查询符合条件的记录数  
  5. 查询salary小于4000或大于10000的记录数  
  6. > db.user.find({$or: [{salary: {$lt:4000}}, {salary: {$gt:10000}}]}).count()  
  7. 4  

2.8 查询存在(或不存在)指定字段的记录

查询不存在age字段,但是有gender字段,并且ex为barrymore的记录。

 

[plain] view plaincopy
 
  1. > db.user.find({"age":{$exists:false},"gender":{$exists:true},"ex":"barrymore"})  
  2. { "_id" : ObjectId("524562d681c83a5bf26fc286"), "ex" : "barrymore", "gender" : "female1", "salary" : 50 }  
  3. { "_id" : ObjectId("524563e881c83a5bf26fc287"), "ex" : "barrymore", "gender" : "x" }  
  4. { "_id" : ObjectId("5245648081c83a5bf26fc288"), "ex" : "barrymore", "gender" : "x" }  

 

3 删除操作

3.1 删除整个集合中的所有数据

 

[plain] view plaincopy
 
  1. > db.test.insert({name:"asdf"})  
  2. > show collections  
  3. book  
  4. system.indexes  
  5. test  
  6. user  
  7. 到这里新建了一个集合,名为test。  
  8. 删除test中的所有记录。  
  9. > db.test.remove()  
  10. PRIMARY> show collections  
  11. book  
  12. system.indexes  
  13. test  
  14. user  
  15. > db.test.find()  
  16. 可见test中的记录全部被删除。  
  17. 注意db.collection.remove()和drop()的区别,remove()只是删除了集合中所有的记录,而集合中原有的索引等信息还在,而drop()则把集合相关信息整个删除(包括索引)。  

3.2 删除集合中符合条件的所有记录

[plain] view plaincopy
 
  1. > db.user.remove({name:\'lfqy\'})  
  2. > db.user.find()  
  3. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  4. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  5. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  6. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  7.   
  8. > db.user.find()  
  9. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  10. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  11. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  12. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  13. { "_id" : ObjectId("52455cc825e437dfea8fd4f8"), "name" : "2", "gender" : "female", "age" : 28, "salary" : 2 }  
  14. { "_id" : ObjectId("52455d8a25e437dfea8fd4fa"), "name" : "1", "gender" : "female", "age" : 28, "salary" : 1 }  
  15. > db.user.remove( {salary :{$lt:10}})  
  16. > db.user.find()  
  17. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  18. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  19. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  20. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  

3.3  删除集合中符合条件的一条记录

[plain] view plaincopy
 
  1. > db.user.find()  
  2. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  3. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  4. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  5. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  6. { "_id" : ObjectId("52455de325e437dfea8fd4fb"), "name" : "1", "gender" : "female", "age" : 28, "salary" : 1 }  
  7. { "_id" : ObjectId("52455de925e437dfea8fd4fc"), "name" : "2", "gender" : "female", "age" : 28, "salary" : 2 }  
  8. > db.user.remove({salary :{$lt:10}},1)  
  9. > db.user.find()  
  10. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  11. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  12. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  13. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  14. { "_id" : ObjectId("52455de925e437dfea8fd4fc"), "name" : "2", "gender" : "female", "age" : 28, "salary" : 2 }  
  15. 当然,也可以是db.user.remove({salary :{$lt:10}},true)  

4 更新操作

 

4.1 赋值更新
db.collection.update(criteria, objNew, upsert, multi )
criteria:update的查询条件,类似sql update查询内where后面的
objNew:update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的。
upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

 

[plain] view plaincopy
 
  1. > db.user.find()  
  2. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  3. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  4. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  5. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  6. { "_id" : ObjectId("52455f8925e437dfea8fd4fd"), "name" : "lfqy", "gender" : "male", "age" : 28, "salary" : 1 }  
  7. { "_id" : ObjectId("5245607525e437dfea8fd4fe"), "name" : "lfqy", "gender" : "male", "age" : 28, "salary" : 2 }  
  8. > db.user.update({name:\'lfqy\'},{$set:{age:23}},false,true)  
  9. > db.user.find()  
  10. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  11. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  12. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  13. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  14. { "_id" : ObjectId("52455f8925e437dfea8fd4fd"), "name" : "lfqy", "gender" : "male", "age" : 23, "salary" : 1 }  
  15. { "_id" : ObjectId("5245607525e437dfea8fd4fe"), "name" : "lfqy", "gender" : "male", "age" : 23, "salary" : 2 }  
  16. db.user.find()  
  17. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  18. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  19. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  20. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  21. { "_id" : ObjectId("52455f8925e437dfea8fd4fd"), "name" : "lfqy", "gender" : "male", "age" : 23, "salary" : 1 }  
  22. { "_id" : ObjectId("5245607525e437dfea8fd4fe"), "name" : "lfqy", "gender" : "male", "age" : 23, "salary" : 2 }  
  23. > db.user.update({name:\'lfqy1\'},{$set:{age:23}},true,true)  
  24. > db.user.find()  
  25. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  26. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  27. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  28. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  29. { "_id" : ObjectId("52455f8925e437dfea8fd4fd"), "name" : "lfqy", "gender" : "male", "age" : 23, "salary" : 1 }  
  30. { "_id" : ObjectId("5245607525e437dfea8fd4fe"), "name" : "lfqy", "gender" : "male", "age" : 23, "salary" : 2 }  
  31. { "_id" : ObjectId("5245610881c83a5bf26fc285"), "age" : 23, "name" : "lfqy1" }  
  32. > db.user.update({name:\'lfqy\'},{$set:{interest:"NBA"}},false,true)  
  33. > db.user.find()  
  34. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  35. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  36. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  37. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  38. { "_id" : ObjectId("5245610881c83a5bf26fc285"), "age" : 23, "name" : "lfqy1" }  
  39. { "_id" : ObjectId("52455f8925e437dfea8fd4fd"), "age" : 23, "gender" : "male", "interest" : "NBA", "name" : "lfqy", "salary" : 1 }  
  40. { "_id" : ObjectId("5245607525e437dfea8fd4fe"), "age" : 23, "gender" : "male", "interest" : "NBA", "name" : "lfqy", "salary" : 2 }  

4.2 增值更新

[plain] view plaincopy
 
  1. > db.user.find()  
  2. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11000 }  
  3. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7000 }  
  4. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  5. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  6. { "_id" : ObjectId("5245610881c83a5bf26fc285"), "age" : 23, "name" : "lfqy1" }  
  7. { "_id" : ObjectId("52455f8925e437dfea8fd4fd"), "age" : 23, "gender" : "male", "interest" : "NBA", "name" : "lfqy", "salary" : 1 }  
  8. { "_id" : ObjectId("5245607525e437dfea8fd4fe"), "age" : 23, "gender" : "male", "interest" : "NBA", "name" : "lfqy", "salary" : 2 }  
  9. > db.user.update({gender:\'female\'},{$inc:{salary:50}},false,true)  
  10. > db.user.find()  
  11. { "_id" : ObjectId("52453cfb25e437dfea8fd4f4"), "name" : "Gal Gadot", "gender" : "female", "age" : 28, "salary" : 11050 }  
  12. { "_id" : ObjectId("52453d8525e437dfea8fd4f5"), "name" : "Mikie Hara", "gender" : "female", "age" : 26, "salary" : 7050 }  
  13. { "_id" : ObjectId("52453e2125e437dfea8fd4f6"), "name" : "Wentworth Earl Miller", "gender" : "male", "age" : 41, "salary" : 33000 }  
  14. { "_id" : ObjectId("52454155d8947fb70d000000"), "name" : "not known", "sex_orientation" : "male", "age" : 13, "salary" : 30000 }  
  15. { "_id" : ObjectId("5245610881c83a5bf26fc285"), "age" : 23, "name" : "lfqy1" }  
  16. { "_id" : ObjectId("52455f8925e437dfea8fd4fd"), "age" : 23, "gender" : "male", "interest" : "NBA", "name" : "lfqy", "salary" : 1 }  
  17. { "_id" : ObjectId("5245607525e437dfea8fd4fe"), "age" : 23, "gender" : "male", "interest" : "NBA", "name" : "lfqy", "salary" : 2 }  

关于更新操作(db.collection.update(criteria, objNew, upsert, multi )),要说明的是,如果upsert为true,那么在没有找到符合更新条件的情况下,mongo会在集合中插入一条记录其值满足更新条件的记录(其中的字段只有更新条件中涉及的字段,字段的值满足更新条件),然后将其更新(注意,如果更新条件是$lt这种不等式条件,那么upsert插入的记录只会包含更新操作涉及的字段,而不会有更新条件中的字段。这也很好理解,因为没法为这种字段定值,mongo索性就不取这些字段)。如果符合条件的记录中没有要更新的字段,那么mongo会为其创建该字段,并更新。

 

上面大致介绍了MongoDB命令行中所涉及的操作,只是为了记录和查阅。细心的也许会发现,这篇文章,越往后我的耐心越少。期待有时间能分享一些not very navie的东西。

总之,希望对自己,对大家都有所帮助。