zoukankan      html  css  js  c++  java
  • MongoDB一些基本的命令

    Win+R进入Dos命令窗口,输入cmd,进入MongoDB exe文件的所在目录,比如我的在E:MongoDBin,分别执行:“E:”回车,然后:"cd mongodb/bin" 回车

    输入“mongo”,开始操作数据库,我这里用的是2.6.7版本

    说明:命令是区分大小写


    操作命令

      show dbs 显示已有的数据库

      use 数据库名 跟MSSQL一样,使用这个数据库

      show collections  显示所有的聚集集合(相当于关系型数据库中的表)

      db.dropDatabase() 删除当前使用的数据库

      db 查看当前使用的数据库名字(或者:db.getName())

      db.stats() 查看当前数据库的一些信息

      db.repairDatabase()  修复数据库

      version() 查看MongoDB版本

      db.getMongo() 查看当前DB连接地址

      db.getPrevError() 查询之前的错误消息

      db.resetError()  清除错误消息


    数据库用户

    db.createUser(
      {
            user:"root",
            pwd:"root",
            roles:
            [ 
               {
                role:"userAdminAnyDatabase",
                db:"admin"
                }
            ]
        }
    )

      上面的代码,表示创建用户,执行前先use你要使用的数据库,创建的用户只属于这个数据库,不是全局用户,不信切到其他数据库,然后show users下

    roles是角色类型,可以show roles 查看所有的角色,db不清楚什么,没查到相关文档,默认就当前数据库名吧

      db.addUser() 不推荐使用

      db.changeUserPassword("root", "123456")  修改用户密码,第一个参数是要修改的用户名,第二个是新密码

      db.dropUser("sa")  删除当前数据库下的一个用户

      db.dropAllUsers()  删除当前数据库下的所有用户

      db.getUser("test") 获取当前数据库下一个用户的信息

      db.getUsers()  获取当前数据库下的所有用户,同等:show users


    集合的操作

      也可以称之为表的操作

      不需要手动的来创建表,直接db.集合名称.insert(保存的JSON数据) 就是既创建集合(集合不存在的前提下),又插入数据

      db.集合名称.drop()  删除集合

      db.getCollection("集合名称")  获取某一个集合的信息,也可以使用 show tables 显示所有的集合

      db.getCollectionNames()  获取当前数据库下所有的集合

      db.printCollectionStats()  获取当前数据库下所有的集合的状态


    数据的CRUD

     插入

      db.集合名称.insert({"name":"test","age":12}),注意,插入的JSON数组只能有一条,也就是"{}",当然 ,里面是可以包含子数据的,但是只能有一组这样的数据,否则最终插入的数据,只有第一条,如果插入的JSON为:{"name":"test","age":12},{"name":"demo","age":12},那么最终入库的只有name=test的数据

        使用循环插入测试数据:for(i=0;i<100;i++)db.集合名称.insert({"index":i,"remark":"这里的索引是:"+i}),就好像程序中的写法,还可以拼接字符串,屌炸天

     更新:

      db.集合名称.update({x:1},{$set:{y:"zzzzz"}})  更新的第一个参数:{x:1}表示更新的条件,第二个为更新的值,如果不适用$set,则更新的x=1的结果中只有y字段,其他字段会被干掉,$set 操作符为部分更新操作符

      使用set之后内容中置顶的字段会被更新,不存在的字段则会保持原样

      使用上面的更新命令是只能更新查找到的第一条数据,无法全部更新,这也是为了防止误操作,如果需要全部更新,则需要多传入两个参数,如下:

      db.集合名称.update({x:1},{$set:{y:"zzzzz"}},false,true) 注意,这种写法,更新的值必须使用 $set 操作符,否则会报“multi update only workds woith $ operators” 这样的错误

      db.集合名称.update({x:1},{x:1,y:"zzzzz"},true)  后面只跟一个true参数,表示如果查找的数据不存在,则为我插入这条数据

    删除:

      db.集合名称.remove({x:1})  这里与更新不同的是,删除会删除掉所有查找的数据

     查询: 

      db.集合名称.find()  查询所有的数据

      db.集合名称.find().skip(10)   查询所有的数据,跳过前10条数据

      db.集合名称.find().limit(10) 查询所有的数据,取前10条数据

      db.集合名称.find().sort({字段:1})  1表示正序,-1表示反序  排序

      以上三个可组合查询用于排序


    索引: 

      db.集合名称.getIndexes()  获取当前集合已有的索引

      db.集合名称.ensureIndex({x:1})  创建索引,1为正向排序,x=-1为逆向索引,我加了一亿条测试数据,索引建起来可真漫长,所以还是在结构设计之初就建好索引吧,索引在这里对查询的速度提升真是太明显了

      db.集合名称.ensureIndex({x:1,y:1}) 创建复合索引,用于多个条件查询

      


    函数:

     db.集合名称.count()   当前集合中共有多少条数据

    参考资料:

      MongoDB中文文档:http://docs.mongoing.com/manual-zh/

      MongoDB官方文档:http://docs.mongodb.org/manual/

  • 相关阅读:
    Unity3d设置QualitySettings为Beautiful Xcode发布错误
    滚轮拉近相机
    (转)oracle
    (转)Oracle存储过程基本语法
    (转)Oracle执行字符串
    (转)Oracle 临时表用法
    安装包范例
    (转)使用PowerDesigner生成HTML功能
    (转)winform下TCP通信的简单应用
    (转)winform下UPD通信的简单应用
  • 原文地址:https://www.cnblogs.com/New-world/p/4242057.html
Copyright © 2011-2022 走看看