MongoDB日常操作

  • 库操作

    • 帮助

      • help
    • 查看库

      • show dbs/ show databases;
    • 切换库/创建库

      • use database_name
      • 存在则切换,不存在则创建
    • 查看当前使用的库

      • db或db.getName()
    • 删除数据库:

      • 先切换到库下,再执行db.dropDatabase()

    • 系统库

      • admin
        • 存放用户和相关权限信息
        • 特定的管理操作必须切到该库执行,如: 列出所有数据库,或者关闭服务
      • local:
        • 永远不会被复制,可以用来存储限于本地单台服务器的任意集合
      • config:
        • 当Mongo用于分片设置时, config数据库还在内部使用,用于保存分片的相关信息
  • 集合操作(表)

    • 帮助:

      • db.worker.help()
    • 查看当前库下有哪些集合:

      • show collections

    • 创建集合:

      • 显示创建:db.createCollection("collection_name")
      • 隐式创建:直接创建文档,会自动创建集合
    • 删除集合:

      • db.集合名.drop()

      • > db.wang.drop()
    • 查看集合中有多少条

      • document: db.collection_name.count()

    • 删除当前数据库中的所有集合:

      • db.collection_name.drop()

  • 文档操作(记录,row)

    • 插入文档:

      • 单个文档的插入:db.collection_name.insert(document),插入文档后会自动生成一个_id号;
        • db.collection_name.save(document)
      • 批量插入:db.collection_name.insert([document1,document2])
    • 查询

      • 集合中的所有文档:
        • db.collection_name.find()
      • 查询特定文档:
        • db.comment.find({"articleid":"102"})
      • 结果集中只返回1条: db.comment.findOne()
      • 投影查询(显示部分字段)
        • 显示要查的字段:db.comment.find({"articleid":"102"},{articleid:1,content:1})
        • 不显示对应的字段:db.comment.find({"articleid":"102"},{articleid:0,content:0})
    • 更新

      • db.collection_name.update(query,update,options)
      • 语法:db.collection_name.update(<query>,<update>,{upsert:<boolean>,multi:<boolean>,writeConcern:<document>})
        • query: update的查询条件,类似sql update后的where
        • update: update的对象和一些更新操作符,$set(直接更新),$inc(累加更新)...
        • multi: 可选,默认false只更新找到的第一条,如果为true则更新查找的所有结果集;
      • save方法插入或者更新文档(_id存在就更新,不存在就插入)
      • 覆盖修改

        • 目标field直接覆盖全部所有的field
        • db.hero.update({"_id":ObjectId("6391b18a32de2b7275d30a1b")},{"age":"37"})
      • 局部修改,只修改特定的field

        • db.hero.update({"name":"caocao"},{$set:{age:28}})
      • 批量修改

        • 对所有过滤出的age:37的结果进行修改: db.hero.update({"age":"37"},{$set:{age:47}},{multi:true})
      • 列值增长修改

        • 给集合中所有47岁的,age+=1 : db.hero.update({"age":47},{$inc:{age:1}})
    • 删除

      • db.collection_name.remove(条件)

        • db.hero.remove({"name":"nanluo"})
        • 操作将删除所有过滤出的结果集
      • 删除集合中的所有数据(同truncate)

        • db.collection_name.remove({})
      • 以id为条件删除

        • db.hero.remove({_id:ObjectId("6391b4f132de2b7275d30a21")})
    • 统计

      • count

        • 查看集合中的文档数db.collection_name.count()
        • 查看age为21的文档数:db.hero.count({"age":"21"})
      • limit/skip分页

        • 查询前2条: db.hero.find().limit(2)
          • db.hero.find({"age":"21"}).limit(2)
        • 跳过第一页,查第二页:db.hero.find({"age":"21"}).limit(5).skip(10)
      • sort

        • 查询结果升序:db.hero.find().sort({age:1})
        • 查询结果降序:db.hero.find().sort({age:-1})
        • 多个条件排序:db.hero.find().sort({age:1,name:-1})
        • 注意:skip(), limit(),sort()同时出现的时候,执行顺序是先sort()然后skip(),最后limit(), 和命令写的顺序无关;
      • 正则的复杂条件查询

        • db.collection_name.find({field:/正则表达式/})
        • db.hero.find({"name":/^z/})
        • db.hero.find({"name":/g$/})
      • 比较查询

        • db.collection_name.find({"field":{$gt:value}})
        • 比较符号: $gt, $lt, $gte, $lte, $ne
        • eg: db.hero.find({"age":{$gt:"21"}})
      • 包含查询

        • db.collection_name.find({field:{$in:["xx","yy"]}})
        • 查询age在19和20的文档: db.hero.find({"age":{$in:["19","20"]}})
      • 条件查询and/or

        • $and:[{},{},{}]
        • $or:[{},{},{}]
        • name=mao 并且age=19的文档: db.hero.find({$and:[{"age":"19"},{"name":"mao"}]})
        • name=mao 或者age= 21的文档: db.hero.find({$or:[{"age":"21"},{"name":"mao"}]})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值