记录在mongo中常用的一些操作语句

698 阅读2分钟

1.不指定条件查询语句(data为集合名字)

  • 默认查询所有文档
  •   db.getCollection("data").find()
    

image-20221014130553870.png

2.指定返回文档数目

  • 默认查询并返回两条文档
  •   db.getCollection("data").find().limit(2)
    

image-20221014104904899.png

  • 其中limit(2)表示返回两条文档

3.查看集合中文档总数

  •   db.getCollection("data").count()
    

image-20221014105100485.png

4.查询companyName为“北京京运通科技股份有限公司”的所有文档

db.getCollection("data").find({'companyName':'北京京运通科技股份有限公司'})

image-20221014105440332.png

5.查询companyName为“北京京通科技股份有限公司”,并指定返回“companyProfile”和“sfcIndustry”字段的文档。

  •   db.getCollection("data").find({'companyName':'北京京运通科技股份有限公司'},{'companyProfile':1,'sfcIndustry':1})
    

image-20221014111334290.png

  • 注意:id字段默认是返回的,如不需要返回__id可以加上" id":0
  •   db.getCollection("data").find({'companyName':'北京京运通科技股份有限公司'},{'companyProfile':1,'sfcIndustry':1,"_id":0})
    

image-20221014111613282.png

6.与查询

  • 查询”companyName“字段值为”北京京运通科技股份有限公司“和”sfcIndustry“字段值为”制造业-专用设备制造业“的所有文档。
  •   db.getCollection("data").find({'companyName':'北京京运通科技股份有限公司','sfcIndustry':'制造业-专用设备制造业'})
    

image-20221014112334965.png

  • 其他更多同时满足条件以此类推。

7.或查询

  • 查询”companyName“值为”北京京运通科技股份有限公司“或”sfcIndustry“值为”制造业-专用设备制造业“的所有文档。
  •   db.getCollection("data").find( { $or : [ { 'companyName' : '北京京运通科技股份有限公司' }, { 'sfcIndustry' : "制造业-专用设备制造业" } ] } )
    

image-20221014112745306.png

  • 同理,其他更多或条件,直接在列表中添加即可。

8.与或复合查询

  • 查询data集合下”sfcIndustry“值为”制造业-专用设备制造业“,并且满足”companyName“值为”北京京运通科技股份有限公司“或者”北京市春立正达医疗器械股份有限公司“的所有文档。
  •   db.getCollection("data").find({'sfcIndustry':'制造业-专用设备制造业',$or : [ { 'companyName' : '北京京运通科技股份有限公司' }, { 'companyName' : '北京市春立正达医疗器械股份有限公司' } ]})
    

image-20221014113934828.png

9.distinct去重

  • 根据字段名为”companyName“去重
  •   db.getCollection("data").distinct("companyName")
      ​
    

image-20221014121218596.png

10 简单正则使用

  • 查询字段”dateOfEstablishment“以”2002“开头的所有文档
  •   db.getCollection("data").find({'dateOfEstablishment':{"$regex":"^2002"}})
    

image-20221014121628859.png

11.查看所有字段名

  •   db.getCollection('data').aggregate([
        {"$project":{"arrayofkeyvalue":{"$objectToArray":"$$ROOT"}}},
        {"$unwind":"$arrayofkeyvalue"},
        {"$group":{"_id":null,"allkeys":{"$addToSet":"$arrayofkeyvalue.k"}}}
      ])
    

image-20221014121845795.png

12.分组求和

  • 根据字段名为”sfcIndustry“来统计数量
  •   db.getCollection('data').aggregate([{"$group": {_id: "$sfcIndustry", count: {$sum: 1}}}, {"$sort": {"count": -1}}], {allowDiskUse: true})
    

image-20221014122120941.png

13.简单通过update来新增一列文档

  • 给集合所有文档增加一个字段”statu“并且值为0
  •   db.getCollection("data").update({}, {$set: {'statu':0}}, {multi: true})
    

image-20221014125149643.png

14.删除指定字段名

  • 删除刚刚新增的“statu”字段

  •   db.getCollection("data").update({
          "statu": {
              "$exists": true
          }
      }, {
          "$unset": {
              "statu":null
          }
      }, {
          multi: true
      });
    

image-20221014125437676.png

15.修改字段名

  • 将集合中的”sfcIndustry“字段名更改为”行业“
  •   db.getCollection("data").updateMany({}, {$rename:{"sfcIndustry":"行业"}}, false, true)
    

image-20221014130124883.png

16.删除指定文档

  • 删除“行业”为"制造业-专用设备制造业"的文档。
  •   db.getCollection("data").remove({'行业':"制造业-专用设备制造业"})
    

image-20221014130513604.png

以上均为学习分享,可能存在不足或者还有其他更优雅的语法,欢迎评论区留言交流!