MongoDB 命令

1. mongodb服务端启动
 sudo mongod --auth # 以权限认证的方式启动
          --fork # 后台运行
          --logpath= # 指定日志文件路径
          --logappend # 声明日志以追加方式写入
          --dbpath= # 指定数据库文件夹所在路径
 
2. 进入mongo shell:mongo
 
3. 超级管理员账号的创建
a. use admin
 b .db.createUser({"user":"python","pwd":"python","roles":["root"]})
 c. 以权限认证的方式重启mongod服务
 d. use admin
 e. db.auth('账号', '密码')
 
4. 普通用户创建
 在admin库中执行
  use admin
  db.createUser({"user":"python1", "pwd":"python1", roles:[{"role":"read","db":"dbname1"},{"role":"readWrite","db":"dbname2"}]})
 
5. 查看用户 show users
 
6. 删除用户 db.dropUser('账号')
 
7. mongodb的命令
 show dbs
 use 数据库名
 db # 查看当前数据库
 db.dropDatabase() 
 show collections # 查看当前数据库中集合
 db.集合名称.drop() # 删除集合
 
8. 增删改
 db.集合名称.insert(document)
 db.集合名称.save(document)
  # 根据数据中的_id,存在就更新,不存在就insert
 db.集合名称.update({条件}}, {$set:{指定更新的kv}}, {multi:false/true})
  # multi参数默认false,true表示更新全部
 db.集合名称.remove({条件}, {justOne: false/true})
  # justOne默认是false,true表示删除一条
 
9. 查
 a. db.集合名.find({条件}).pretty()
 b. db.stu.find({age:{$gte:18}}) # $lte $ne 
 c. db.stu.find({$or:[{age:{$gte:18}},{gender:true}],name:'gj'})
 d. db.stu.find({age:{$in:[18,28,38]}}) # $nin
 e. db.stu.find({name:{$regex:'靖$'}})
 f. db.stu.find().skip(1).limit(1)
 g. db.stu.find({},{_id:0,name:1,gender:1})
 h. db.stu.find().sort({gender:-1,age:1})
 i. db.stu.find().count()
 
 
10. 聚合操作
 a. $group
  db.集合名.aggregate(
   {$group: 
    {
     _id:'$k', # _id: null
     k2: {$sum:1},
     k3: {$push:'$$ROOT'} # 把整个数据放到k3中
    }
   }
  )
 
 db.stu.aggregate(
  {
   $group:{
    _id:{
     hometown1:'$hometown',
     age1:'$age',
     name1:'$name'
    }
   }
  }
 )
 
 b. $match
  db.stu.aggregate(
     {$match:{age:{$gt:20}}},
     {$group:{_id:"$gender",counter:{$sum:1}}}
  )
 
   c. $project
  db.stu.aggregate(
   {$group:{_id:"$gender",counter:{$sum:1}}},
   {$project:{_id:0,counter:1}}
  )
 
 d. db.stu.aggregate(
     {$group:{_id:'$gender', count:{$sum:1}}},
     {$sort:{count:1}},
     {$skip:1},
     {$limit:1}
 ) # 先skip,再limit!
 
11. 索引
 索引的作用:
  提高查询速度
  对数据做去重
 创建索引
 db.集合名.ensureIndex({k1:1,k2:-1}, {"unique":true})
  # 普通索引:{k1:1升序/-1降序}
  # 联合索引:{k1:1,k2:-1}
  # 唯一索引:{"unique":true}
 查看索引
 db.集合名.getIndexes()
 删除索引
 db.集合名.dropIndex({k1:1})
 
 # 注意
  # 提高查询建立索引的字段的速度
  # 尤其是联合索引,会降低写入速度,这也是读写分离的原理
 
 
12. 备份恢复、导出导入
 备份
  mongodump -h ip:port -d 数据库 -o 数据库文件夹位
 恢复
  mongorestore -h ip:port -d 数据库 --dir=备份的数据库文件的位置
 导出
  mongoexport -h ip:port -d 数据库 -c 集合名 -o 导出的文件完整路径
 导入
  mongoimport -h ip:port -d 数据库 -c 集合名 --file=导出文件的完整路径
原文地址:https://www.cnblogs.com/lab-zj/p/12166680.html