mongodb中shell基本常用操作命令

    xiaoxiao2022-07-13  148

    shell常用操作

    查看数据库版本

    db.version()

    查看当前数据库机器的连接地址

    db.getMongo()

    创建一个数据库(如果use之后没有创建任何集合。系统就会删除这个数据库。)

    use [databaseName]

    删除数据库(如果没有选择任何数据库,会删除默认的test数据库)

    db.dropDatabase() 查看有没有删除 show dbs

    显示当前数据库

    db

    查看所有数据库

    show dbs

    创建集合文档

    db.createCollection('a')

    查看数据库中所有文档(documentName)

    show collections

    查询定制文档的数据

    查询所有 db.[documentName].find() 相当于select * from table 查询第一条数据 db.[documentName].findOne()

    重命名集合

    db.c.renameCollection("d")

    删除数据库中集合(documentName)

    db.[documentName].drop() 查看有没有删除 show colloctions

    shell里的help

    全局的help() 数据库的help:db.help() 数据库中文档的help:db.[documentName].help()

    关于用户管理命令

    进入管理数据库

    use admin

    创建管理员用户,root权限(创建管理员角色用户的时候,必须到admin下创建。删除也是)

    用户一 db.createUser( { user: "root", pwd: "root", roles: [ { role: "root", db: "admin" } ] } ) 用户二 db.createUser( { user: "mydb", pwd: "mydb", roles: [ { role: "dbAdmin", db: "mydb" } ] } )

    查看当前用户列表

    db.system.users.find()

    查看创建的管理员用户

    show users

    验证用户是否可用,返回1 表示成功

    db.auth("root","root")

    删除用户 删除单个用户

    db.system.users.remove({user:"XXXXXX"})

    删除所有用户

    db.system.users.remove({})

    创建完用户后在配置文件中开启用户验证,保存重启

    权限级别:

    document数据插入

    给指定数据库添加集合并添加记录

    db.[documentName].insert({key:"value"})

    批量插入(shell不支持批量插入,想要完成批量插入使用shell的for循环)

    for(var i=0;i<10;i++){ db.[ducumentName].insert({name:i}) }

    document数据删除

    删除相应文档中数据

    db.[documentName].remove({删除条件}) 例子: db.[documentName].remove({age:2}) 删除age=2的数据

    删除列表中所有数据(集合的本身和索引不会删除)

    db.[documentName].remove()

    document数据更新

    强硬的文档替换更新操作(一般不使用,主键冲突的时候会报错)

    db.[documentName].updata({更新条件},{更新内容}) 例子: var p = db.[documentName].findOne() db.[documentName].update(p.{name:"hello"})

    insertOrUpdate操作

    db.[documentName].update({更新条件},{更新内容},true) 意思是当查询条件满足时执行更新操作,不满足执行插入操作

    批量更新操作

    db.[documentName].update({更新条件},{$set:{将更新内容放在修改器中}},false,true) 例子 db.[documentName].update({name:"hello"},{$set:{name:"world"}},false,true) 表示把所有neme=hello符合条件的都修改成world,false表示不启用insertOrUpdate,true表示启用批量更新

    常用修改器介绍

    $set:{} 如果存在键进行修改,不存在追加 $inc:{key:步长} 为指定键对应的数字类型的数值进行加减操作 $unset:{key:1} 删除指定的键 $push:{数组键:value} 往数组中追加值,如果未发现数据键则创建并追加 例子: db.[documentName].insert({_id:5,name:5,books:[]}) db.[documentName].update({_id:5},{$push:{books:"books数组中值"}}) $pushAll:{数组键:[var1,var2,va3]} 一次追加多个值 $addToSet:{数组键:val} 目标数组存在此项则不操作,不存在则追加进去 $pop:{数组键:val} 从指定数组删除一个值当val=1删除最后一个值var=-1删除第一个值 $pull:{数字键:val} 删除一个指定数组中的值 $pull:{数组建:val1,val2,val...} 一次性删除多个指定的值

    document数据查询

    插入500条数据

    for(i=0;i<10000;i++){ db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()}); }

    设置每页显示50条记录

    DBQuery.shellBatchSize=50;

    查看第一条

    db.log.findOne()

    查看总记录数

    db.log.count()

    查看uid为100 的

    db.log.find({uid:100});

    find 准备素材:

    var persons = [{ name:"jim", age:25, email:"75431457@qq.com", c:89,m:96,e:87, country:"USA", books:["JS","C++","EXTJS","MONGODB"] }, { name:"tom", age:25, email:"214557457@qq.com", c:75,m:66,e:97, country:"USA", books:["PHP","JAVA","EXTJS","C++"] }, { name:"lili", age:26, email:"344521457@qq.com", c:75,m:63,e:97, country:"USA", books:["JS","JAVA","C#","MONGODB"] }, { name:"zhangsan", age:27, email:"2145567457@qq.com", c:89,m:86,e:67, country:"China", books:["JS","JAVA","EXTJS","MONGODB"] }, { name:"lisi", age:26, email:"274521457@qq.com", c:53,m:96,e:83, country:"China", books:["JS","C#","PHP","MONGODB"] }, { name:"wangwu", age:27, email:"65621457@qq.com", c:45,m:65,e:99, country:"China", books:["JS","JAVA","C++","MONGODB"] }, { name:"zhaoliu", age:27, email:"214521457@qq.com", c:99,m:96,e:97, country:"China", books:["JS","JAVA","EXTJS","PHP"] }, { name:"piaoyingjun", age:26, email:"piaoyingjun@uspcat.com", c:39,m:54,e:53, country:"Korea", books:["JS","C#","EXTJS","MONGODB"] }, { name:"lizhenxian", age:27, email:"lizhenxian@uspcat.com", c:35,m:56,e:47, country:"Korea", books:["JS","JAVA","EXTJS","MONGODB"] }, { name:"lixiaoli", age:21, email:"lixiaoli@uspcat.com", c:36,m:86,e:32, country:"Korea", books:["JS","JAVA","PHP","MONGODB"] }, { name:"zhangsuying", age:22, email:"zhangsuying@uspcat.com", c:45,m:63,e:77, country:"Korea", books:["JS","JAVA","C#","MONGODB"] }] for(var i = 0;i<persons.length;i++){ db.persons.insert(persons[i]) }

    查询指定字段(默认自带的id去掉)

    db.persons.find({},{_id:0,name:1,age:1,country:1})

    查询出年龄在25-27之间的学习生

    db.persons.find({age:{$gte:25,$lte:27}},{_id:0,name:1,age:1})

    查询出所有不是韩国国籍学生的数学成绩

    db.persons.find({country:{$ne:'Korea'}},{_id:0,name:1,m:1,country:1})

    查询国籍是中国或者是美国的学生

    db.persons.find({country:{$in:['USA','China']}},{_id:0,name:1,country:1})

    查询国籍不是中国或者美国的学生

    db.persons.find({country:{$nin:['USA','China']}},{_id:0,name:1,country:1})

    查询语文成绩大于85或者英语大于九十的学生信息

    db.persons.find({$or:[{c:{$gt:85}},{e:{$gt:90}}]},{_id:0,name:1,e:1,c:1})

    把中国国籍的学生上心新增sex键

    db.persons.update({country:'China'},{$set:{sex:'M'}},false,true)

    查询sex为null 的学习

    db.persons.find({sex:{$in:[null]}},{_id:0,name:1,sex:1})

    查询名字中存在“li”的学生信息

    db.persons.find({name:/li/i},{_id:0,name:1,sex:1})

    查询名字中不存在“li”的学生信息

    db.persons.find({name:{$nin:[/li/i]}},{_id:0,name:1,sex:1})

    查询喜欢看MONGOD和JS的学生

    db.persons.find({books:{$all:['MONGODB','JS']}},{_id:0,name:1,books:1})

    查询第二本书是JAVA的学生信息

    db.persons.find({'books.1':'JAVA'},{_id:0,name:1,books:1})

    查询出Jim书架中第2~4本书

    db.persons.find({name:"jim"},{books:{"$slice":[1,3]}})

    查询出最后一本书

    db.persons.find({name:"jim"},{books:{"$slice":-1},_id:0,name:1})

    分页与排序

    查询出persons文档中前5条数据

    db.persons.find({},{_id:0,name:1}).limit(5)

    查询出persons文档中5~10条的数据

    db.persons.find({},{_id:0,name:1}).limit(5).skip(5)

    Sort返回按照年龄排序的数据[1,-1]

    db.persons.find({},{_id:0,name:1,age:1}).sort({age:1})

    三条数据位一页进行分页

    第一页db.persons.find({},{_id:0,name:1}).limit(3).skip(0) 第二页db.persons.find({},{_id:0,name:1}).limit(3).skip(3)
    最新回复(0)