zoukankan      html  css  js  c++  java
  • MongoDB命令行操作

    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的东西。

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

  • 相关阅读:
    第五周
    第四周
    第三周作业
    第二周编程总结
    编程总结(3)
    编程总结(2)
    编程总结(1)
    第七周作业
    第六周作业
    第五周作业
  • 原文地址:https://www.cnblogs.com/lixiuran/p/3363604.html
Copyright © 2011-2022 走看看