经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MongoDB » 查看文章
MongoDB数据库(二):增删查改
来源:cnblogs  作者:renpingsheng  时间:2019/3/25 9:10:35  对本文有异议

MongoDB数据库的增删查改

1.插入数据

语法:

  1. db.集合名称.insert(document)
  2. db.table_name.insert({name:'gj',gender:1})
  3. db.table_name.insert({_id:"20170101",name:'gj',gender:1})

插??档时, 如果不指定_id参数,MongoDB会为?档分配?个唯?的ObjectId

使用insert时如果指定的_id在数据表中已经存在,则插入数据失败

例子:

  1. > db.test_table01.insert({_id:1000001,name:"xiaobing",age:30}) # 向数据库中插入一条_id为1000001的数据
  2. WriteResult({ "nInserted" : 1 })
  3. > db.test_table01.insert({_id:1000001,name:"xiaoming",age:40}) # 再次向数据库中插入一条_id为1000001的数据,会提示失败
  4. WriteResult({
  5. "nInserted" : 0,
  6. "writeError" : {
  7. "code" : 11000,
  8. "errmsg" : "E11000 duplicate key error collection: study_test.test_table01 index: _id_ dup key: { : 1000001.0 }"
  9. }
  10. })

2.保存数据

语法:

  1. db.集合名称.save(document)

如果?档的_id已经存在则修改文档,如果?档的_id不存在则添加,类似于Django中的update_or_create

例子:

  1. > db.test_table01.find()
  2. { "_id" : ObjectId("5c939a4f4c9ce97c5b78a0da"), "name" : "xiaowang", "age" : 10 }
  3. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaohong", "age" : 20 }
  4. { "_id" : 1000001, "name" : "xiaobing", "age" : 30 }
  5. > db.test_table01.save({_id:1000001,name:"xiaoming",age:40}) # 向数据库中保存_id为1000001的数据,会更新已经的数据
  6. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  7. > db.test_table01.find()
  8. { "_id" : ObjectId("5c939a4f4c9ce97c5b78a0da"), "name" : "xiaowang", "age" : 10 }
  9. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaohong", "age" : 20 }
  10. { "_id" : 1000001, "name" : "xiaoming", "age" : 40 }

3.简单查询

语法:

  1. db.集合名称.find({条件?档}) # 查询所有符合条件的文档
  2. db.集合名称.findOne({条件?档}) # 根据条件查询文档,只返回第?个
  3. db.集合名称.find({条件?档}).pretty() # 根据条件查询文档,并将输出结果格式化

4.更新

语法:

  1. db.集合名称.update(<query> ,<update>,{multi: <boolean>})
  2. 参数说明:
  3. query:查询条件
  4. update:更新操作符
  5. multi:可选,默认是false,表示只更新找到的第?条记录,值为true表示把满?query条件的?档全部更新

"multi update only works with $ operators":只有替换后的字段前面加上"$"时,才可以一次性更新多条数据

例子:

  1. > db.userinfo.find().pretty() # userinfo数据库里有5条数据
  2. {
  3. "_id" : ObjectId("5c94f37d25000fc9936a9759"),
  4. "country" : "china",
  5. "province" : "sh",
  6. "userid" : "a"
  7. }
  8. {
  9. "_id" : ObjectId("5c94f38425000fc9936a975a"),
  10. "country" : "china",
  11. "province" : "sh",
  12. "userid" : "b"
  13. }
  14. {
  15. "_id" : ObjectId("5c94f38625000fc9936a975b"),
  16. "country" : "china",
  17. "province" : "sh",
  18. "userid" : "c"
  19. }
  20. {
  21. "_id" : ObjectId("5c94f39325000fc9936a975c"),
  22. "country" : "china",
  23. "province" : "bj",
  24. "userid" : "da"
  25. }
  26. {
  27. "_id" : ObjectId("5c94f39925000fc9936a975d"),
  28. "country" : "china",
  29. "province" : "bj",
  30. "userid" : "fa"
  31. }
  32. > db.userinfo.update({country:"china"},{set:{country:"zhongguo"}}) # 把country等于china的整条数据替换掉,只替换一条数据
  33. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  34. > db.userinfo.find() # 第一条数据被替换,只有_id字段没有改变
  35. { "_id" : ObjectId("5c94f37d25000fc9936a9759"), "set" : { "country" : "zhongguo" } }
  36. { "_id" : ObjectId("5c94f38425000fc9936a975a"), "country" : "china", "province" : "sh", "userid" : "b" }
  37. { "_id" : ObjectId("5c94f38625000fc9936a975b"), "country" : "china", "province" : "sh", "userid" : "c" }
  38. { "_id" : ObjectId("5c94f39325000fc9936a975c"), "country" : "china", "province" : "bj", "userid" : "da" }
  39. { "_id" : ObjectId("5c94f39925000fc9936a975d"), "country" : "china", "province" : "bj", "userid" : "fa" }
  40. > db.userinfo.update({country:"china"},{$set:{country:"zhongguo"}}) # 把country等于china的字段更新为country等于zhongguo,只更新一条数据
  41. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  42. > db.userinfo.find()
  43. { "_id" : ObjectId("5c94f37d25000fc9936a9759"), "set" : { "country" : "zhongguo" } }
  44. { "_id" : ObjectId("5c94f38425000fc9936a975a"), "country" : "zhongguo", "province" : "sh", "userid" : "b" }
  45. { "_id" : ObjectId("5c94f38625000fc9936a975b"), "country" : "china", "province" : "sh", "userid" : "c" }
  46. { "_id" : ObjectId("5c94f39325000fc9936a975c"), "country" : "china", "province" : "bj", "userid" : "da" }
  47. { "_id" : ObjectId("5c94f39925000fc9936a975d"), "country" : "china", "province" : "bj", "userid" : "fa" }
  48. > db.userinfo.update({country:"china"},{$set:{country:"zhongguo"}},{multi:true}) # 把country等于china的字段更新为country等于zhongguo,multi的值为true,所以更新所有符合条件的数据
  49. WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })
  50. > db.userinfo.find()
  51. { "_id" : ObjectId("5c94f37d25000fc9936a9759"), "set" : { "country" : "zhongguo" } }
  52. { "_id" : ObjectId("5c94f38425000fc9936a975a"), "country" : "zhongguo", "province" : "sh", "userid" : "b" }
  53. { "_id" : ObjectId("5c94f38625000fc9936a975b"), "country" : "zhongguo", "province" : "sh", "userid" : "c" }
  54. { "_id" : ObjectId("5c94f39325000fc9936a975c"), "country" : "zhongguo", "province" : "bj", "userid" : "da" }
  55. { "_id" : ObjectId("5c94f39925000fc9936a975d"), "country" : "zhongguo", "province" : "bj", "userid" : "fa" }
  56. > db.userinfo.update({country:"zhongguo"},{set:{country:"zh_CN"}},{multi:true}) # multi的值为true,但是set前没有加"$",所以此次更新操作没有更新数据
  57. WriteResult({
  58. "nMatched" : 0,
  59. "nUpserted" : 0,
  60. "nModified" : 0,
  61. "writeError" : {
  62. "code" : 9,
  63. "errmsg" : "multi update only works with $ operators"
  64. }
  65. })
  66. > db.userinfo.update({country:"zhongguo"},{$set:{country:"zh_CN"}},{multi:true}) # multi的值为true,set前加了"$",所以把所有文档的country字段更新为"zh_CN"
  67. WriteResult({ "nMatched" : 4, "nUpserted" : 0, "nModified" : 4 })
  68. > db.userinfo.find()
  69. { "_id" : ObjectId("5c94f37d25000fc9936a9759"), "set" : { "country" : "zhongguo" } }
  70. { "_id" : ObjectId("5c94f38425000fc9936a975a"), "country" : "zh_CN", "province" : "sh", "userid" : "b" }
  71. { "_id" : ObjectId("5c94f38625000fc9936a975b"), "country" : "zh_CN", "province" : "sh", "userid" : "c" }
  72. { "_id" : ObjectId("5c94f39325000fc9936a975c"), "country" : "zh_CN", "province" : "bj", "userid" : "da" }
  73. { "_id" : ObjectId("5c94f39925000fc9936a975d"), "country" : "zh_CN", "province" : "bj", "userid" : "fa" }

5.删除文档

语法:

  1. db.集合名称.remove(<query>,{justOne: <boolean>})
  2. 参数说明:
  3. query:可选,删除?档的条件
  4. justOne:可选, 如果设为true1 则只删除?条, 默认false 表示删除多条

例子:

  1. > db.test_table01.find()
  2. { "_id" : ObjectId("5c939a4f4c9ce97c5b78a0da"), "name" : "xiaoqiang", "age" : 10 }
  3. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }
  4. { "_id" : 1000001, "name" : "xiaobei" }
  5. { "_id" : ObjectId("5c939dd14c9ce97c5b78a0dc"), "name" : "xiaoqiang", "age" : 20 }
  6. { "_id" : ObjectId("5c939dd44c9ce97c5b78a0dd"), "name" : "xiaoqiang", "age" : 30 }
  7. { "_id" : ObjectId("5c939dd74c9ce97c5b78a0de"), "name" : "xiaoqiang", "age" : 40 }
  8. > db.test_table01.remove({name:"xiaobei"}) # 删除所有name为xiaobei的数据
  9. WriteResult({ "nRemoved" : 1 })
  10. > db.test_table01.find()
  11. { "_id" : ObjectId("5c939a4f4c9ce97c5b78a0da"), "name" : "xiaoqiang", "age" : 10 }
  12. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }
  13. { "_id" : ObjectId("5c939dd14c9ce97c5b78a0dc"), "name" : "xiaoqiang", "age" : 20 }
  14. { "_id" : ObjectId("5c939dd44c9ce97c5b78a0dd"), "name" : "xiaoqiang", "age" : 30 }
  15. { "_id" : ObjectId("5c939dd74c9ce97c5b78a0de"), "name" : "xiaoqiang", "age" : 40 }
  16. > db.test_table01.remove({name:"xiaoqiang"},{justOne:true}) # 删除一条name等于xiaoqiang的数据
  17. WriteResult({ "nRemoved" : 1 })
  18. > db.test_table01.find()
  19. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }
  20. { "_id" : ObjectId("5c939dd14c9ce97c5b78a0dc"), "name" : "xiaoqiang", "age" : 20 }
  21. { "_id" : ObjectId("5c939dd44c9ce97c5b78a0dd"), "name" : "xiaoqiang", "age" : 30 }
  22. { "_id" : ObjectId("5c939dd74c9ce97c5b78a0de"), "name" : "xiaoqiang", "age" : 40 }
  23. > db.test_table01.remove({name:"xiaoqiang"}) # 删除所有name等于xiaoqiang的数据,共删除了3条数据
  24. WriteResult({ "nRemoved" : 3 })
  25. > db.test_table01.find()
  26. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }

6.?较运算符查询

MongoDB数据库中的?较运算符有:

  1. = 等于,默认是等于判断,没有运算符
  2. $lt ?于
  3. $lte ?于等于
  4. $gt ?于
  5. $gte ?于等于
  6. $ne 不等于

例子:

  1. > db.test_table01.insert({name:"乔峰",hometown:"丐帮",gender:"male",age:32}) # 向数据表中插入四条数据
  2. WriteResult({ "nInserted" : 1 })
  3. > db.test_table01.insert({name:"段誉",hometown:"云南大理",gender:"male",age:22})
  4. WriteResult({ "nInserted" : 1 })
  5. > db.test_table01.insert({name:"虚竹",hometown:"少林寺",gender:"male",age:28})
  6. WriteResult({ "nInserted" : 1 })
  7. > db.test_table01.insert({name:"王语嫣",hometown:"燕子坞",gender:"female",age:18})
  8. WriteResult({ "nInserted" : 1 })
  9. > db.test_table01.find()
  10. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }
  11. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  12. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  13. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }
  14. { "_id" : ObjectId("5c93a1fd4c9ce97c5b78a0e6"), "name" : "王语嫣", "hometown" : "燕子坞", "gender" : "female", "age" : 18 }
  15. > db.test_table01.find({age:{$lt:20}}) # 查找年龄小于20岁的所有数据
  16. { "_id" : ObjectId("5c93a1fd4c9ce97c5b78a0e6"), "name" : "王语嫣", "hometown" : "燕子坞", "gender" : "female", "age" : 18 }
  17. > db.test_table01.find({age:{$lte:25}}) # 查找年龄小于等于25岁的所有数据
  18. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }
  19. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  20. { "_id" : ObjectId("5c93a1fd4c9ce97c5b78a0e6"), "name" : "王语嫣", "hometown" : "燕子坞", "gender" : "female", "age" : 18 }
  21. > db.test_table01.find({age:{$gt:20}}) # 查找年龄大于20岁的所有数据
  22. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  23. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  24. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }
  25. > db.test_table01.find({age:{$gte:30}}) # 查找年龄大于等于30岁的所有数据
  26. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  27. > db.test_table01.find({age:{$ne:18}}) # 查找年龄不等于18岁的所有数据
  28. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }
  29. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  30. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  31. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }

7.逻辑运算符查询

语法:

  1. and 条件与,多个条件共同查询
  2. or 条件或,符合一个条件与可

例子:

  1. > db.test_table01.find({age:22,gender:"male"}) # 查找所有年龄为22,性别为男的人
  2. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  3. > db.test_table01.find({age:{$gt:20},gender:"male"}) # 查找所有年龄大于20,性别为男的人
  4. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  5. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  6. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }
  7. > db.test_table01.find({$or:[{age:{$gt:20},gender:"male"}]}) # 查找所有年龄大于20或者性别为男的人
  8. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  9. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  10. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }
  11. > db.test_table01.find({$or:[{age:{$gte:20},gender:"male"}]}) # 查找所有年龄大于等于20或者性别为男的人
  12. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  13. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  14. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }

8.范围运算符查询

语法:

  1. $in 在范围之内
  2. $nin 不在范围之内

例子:

  1. > db.test_table01.find({age:{$in:[18,28,38]}}) # 查找年龄为18或者28或者38的人
  2. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }
  3. { "_id" : ObjectId("5c93a1fd4c9ce97c5b78a0e6"), "name" : "王语嫣", "hometown" : "燕子坞", "gender" : "female", "age" : 18 }
  4. > db.test_table01.find({age:{$nin:[18,28,38]}}) # 查找年龄不等于18或者28或者38的人
  5. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }
  6. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  7. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }

9.正则表达式语句查询

语法:

  1. // 后接正则表达式进行查询
  2. $regex 后接正则表达式进行查询

例子:

  1. > db.test_table01.find({name:{$regex:'^王'}}) # 查找姓王的所有人
  2. { "_id" : ObjectId("5c93a1fd4c9ce97c5b78a0e6"), "name" : "王语嫣", "hometown" : "燕子坞", "gender" : "female", "age" : 18 }

10.limit和skip

  1. limit() ?于读取指定数量的?档
  2. skip() ?于跳过指定数量的?档

语法:

  1. db.集合名称.find({条件?档}).skip(number) # 按条件查询,跳过number条数据
  2. db.集合名称.find({条件?档}).limit(number) # 按条件查询,取前number条数据
  3. db.集合名称.find({条件?档}).limit(10).skip(5) # 按条件查询后,取第6到第10条数据
  4. db.集合名称.find({条件?档}).skip(5).limit(4) # 按条件查询后,取第6条到和9条数据

例子:

  1. > db.test_table01.find({gender:"male"}) # 查询所有的男性
  2. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  3. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  4. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }
  5. > db.test_table01.find({gender:"male"}).limit(2) # 查询所有的男性,取前两条数据
  6. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  7. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  8. > db.test_table01.find({gender:"male"}).skip(2) # 查询所有的男性,跳过前2条数据
  9. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }

11.投影

语法:

  1. db.集合名称.find({},{字段名称:1,...}) # 查询结果,只选择必要的字段
  2. 参数为字段与值,值为1表示显示,值为0不显

对于_id列默认是显示的, 如果不显示需要明确设置为0

例子:

  1. > db.test_table01.find({gender:"male"},{name:1,hometown:1}) # 查询所有的男性,显示_id,name和hometown
  2. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮" }
  3. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理" }
  4. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺" }
  5. > db.test_table01.find({gender:"male"},{name:1}) # 查询所有男性,显示name和_id字段
  6. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰" }
  7. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉" }
  8. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹" }
  9. > db.test_table01.find({gender:"male"},{hometown:1}) # 查询所有男性,显示_id和hometown字段
  10. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "hometown" : "丐帮" }
  11. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "hometown" : "云南大理" }
  12. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "hometown" : "少林寺" }
  13. > db.test_table01.find({gender:"male"},{hometown:1,_id:0}) # 查询所有男性,显示hometown,不显示_id字段
  14. { "hometown" : "丐帮" }
  15. { "hometown" : "云南大理" }
  16. { "hometown" : "少林寺" }
  17. > db.test_table01.find({},{name:1,age:1}) # 查询所有男性,显示_id和name,age字段
  18. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }
  19. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "age" : 32 }
  20. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "age" : 22 }
  21. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "age" : 28 }
  22. { "_id" : ObjectId("5c93a1fd4c9ce97c5b78a0e6"), "name" : "王语嫣", "age" : 18 }
  23. > db.test_table01.find({},{name:1,age:1,_id:0}) # 查询所有男性,显示name,age字段
  24. { "name" : "xiaozhao", "age" : 20 }
  25. { "name" : "乔峰", "age" : 32 }
  26. { "name" : "段誉", "age" : 22 }
  27. { "name" : "虚竹", "age" : 28 }
  28. { "name" : "王语嫣", "age" : 18 }

12.排序

  1. sort() 对查询结果进?排序

语法:

  1. db.集合名称.find().sort({字段:1,...})
  2. 参数1为升序排列
  3. 参数-1为降序排列

例子:

  1. > db.test_table01.find().sort({age:1}) # 查询所有数据,按age字段升序排列
  2. { "_id" : ObjectId("5c93a1fd4c9ce97c5b78a0e6"), "name" : "王语嫣", "hometown" : "燕子坞", "gender" : "female", "age" : 18 }
  3. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }
  4. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  5. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }
  6. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  7. > db.test_table01.find().sort({age:-1}) # 查询所有数据,按age字段降序排列
  8. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  9. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }
  10. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  11. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }
  12. { "_id" : ObjectId("5c93a1fd4c9ce97c5b78a0e6"), "name" : "王语嫣", "hometown" : "燕子坞", "gender" : "female", "age" : 18 }
  13. > db.test_table01.find().sort({name:-1}) # 查询所有数据,按name字段降序排列
  14. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }
  15. { "_id" : ObjectId("5c93a1fd4c9ce97c5b78a0e6"), "name" : "王语嫣", "hometown" : "燕子坞", "gender" : "female", "age" : 18 }
  16. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  17. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  18. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }
  19. > db.test_table01.find().sort({hometown:1}) # 查询所有数据,按hometown字段升序排列
  20. { "_id" : ObjectId("5c939adc4c9ce97c5b78a0db"), "name" : "xiaozhao", "age" : 20 }
  21. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }
  22. { "_id" : ObjectId("5c93a1e74c9ce97c5b78a0e4"), "name" : "段誉", "hometown" : "云南大理", "gender" : "male", "age" : 22 }
  23. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }
  24. { "_id" : ObjectId("5c93a1fd4c9ce97c5b78a0e6"), "name" : "王语嫣", "hometown" : "燕子坞", "gender" : "female", "age" : 18 }
  25. > db.test_table01.find({age:{$gt:25}}).sort({age:1}) # 查询age大于25的所有数据,按age字段升序排列
  26. { "_id" : ObjectId("5c93a1f14c9ce97c5b78a0e5"), "name" : "虚竹", "hometown" : "少林寺", "gender" : "male", "age" : 28 }
  27. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }

13.统计个数

  1. count() 统计结果集中?档条数

语法:

  1. db.集合名称.find({查询条件}).count()
  2. db.集合名称.count({查询条件})

例子:

  1. > db.test_table01.find({}).count() # 查询所有数据的数量
  2. 5
  3. > db.test_table01.find({age:{$gt:25}}).count() # 查询age大于25的所有数据的总数
  4. 2
  5. > db.test_table01.find({gender:"male"}).count() # 查询gender等于male的所有数据的总数
  6. 3

14.去重

  1. distinct() 对数据进?去重

语法:

  1. db.集合名称.distinct('去重字段',{条件})

例子:

  1. > db.test_table01.distinct("gender") # 对gemder字段进行去重
  2. [ "male", "female" ]
  3. > db.test_table01.distinct("gender",{age:{$gt:20}}) # 对age大于20的所有数据的gender字段信息进行去重
  4. [ "male" ]
  5. > db.test_table01.distinct("age") # 对所有数据的age字段进行去重
  6. [ 20, 32, 22, 28, 18 ]
  7. > db.test_table01.distinct("name") # 对所有数据的name字段进行去重
  8. [ "xiaozhao", "乔峰", "段誉", "虚竹", "王语嫣" ]

15.?定义查询

语法:

  1. 使?$where后?写?个函数, 返回满?条件的数据

例子:

  1. > db.test_table01.find({$where:function(){return this.age > 30}}) # 查询age大于30的所有数据
  2. { "_id" : ObjectId("5c93a1d64c9ce97c5b78a0e3"), "name" : "乔峰", "hometown" : "丐帮", "gender" : "male", "age" : 32 }

原文链接:http://www.cnblogs.com/renpingsheng/p/10582698.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号