MongoDB 命令备忘


启动mongo服务
mongod [--dbpath 数据库路径][--logpath 日志][--config 从配置文件启动][--auth 开启验证][--bind_ip 127.0.0.1 绑定ip(只能用本机连)]

创建用户
[use admin 创建管理员用户]
db.addUser("root","hellomongo")
[db.createUser({user:"root",pwd:"root",roles:["readWrite"]})]
    1. 数据库用户角色:read、readWrite;
    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4. 备份恢复角色:backup、restore;
    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

验证用户
db.auth("root","hellomongo")


登录mongo
mongo

列出数据库
show dbs

链接数据库(创建)
use dbname

删除所在数据库
db.dropDatabase()

创建名为collection1的集合
db.createCollection("collection1")

删除collection1
db.collection1.drop()

向collection1中插入文档{name:"xp"},若collection1不存在则创建collection1
db.collection1.insert({"name":"xp"})

列出所有collections
show collections

查看集合名为collection1的集合
db.collection1.find()
[.pretty()格式化]
[.limit(n)限制返回个数n]
[.sort({"age":-1})按age降序排序]


查询collection1中name=xp的文档
db.collection1.find({"name":"xp"})

查询collection1 但是解雇中不列出name属性
db.collection1.find({},{"name":0})

查询collection1中age值大于17的文档
db.collection1.find(
  { "age" :
    { $gt: 17}
  })

$gt:大于
$lt:小于
$gte:大于或等于
$lte:小于或等于

in查询 not in($nin)
db.collection1.find(
{
  name:{
        $in:["xp","tr"]
       }
})

查询collection1中 prefer值包含ball(可用正则表达式匹配)的文档,且忽略大小写
db.collection1.find({
  prefer:
    {
      $regex:"ball",
      $options:"i"
    }
})

查询collection1中所有prefer包含ball的文档
db.collection1.find({"prefer":/ball/})

查询collection1中prefer包含ball,并且gender=girl的文档
db.collection1.find({
  "prefer":/ball/,
  "gender":"girl"
})

查询collection1中name=lily或name=lucy的文档
db.collection1.find({
  $or:[
    {"name":"lily"},
    {"name":"lucy"}
  ]
})

查询collection1中文档个数 (可以用条件过滤)
db.collection1.count()

查询每个学校的人数,并按人数降序排序
db.message.aggregate(
[
  {$group:
    {
      _id:"$school",
      num:{$sum:1}
    }
  },
  {$sort:
    {
      num:-1
    }
  }
])

删除collection1中的文档 (可以用条件过滤)
db.collection1.remove()

向collection1中插入文档{name:"xp"},若collection1不存在则创建collection1
db.collection1.insert({"name":"xp"})

更新name=xiaoming的文档,使gender=male、prefer=basketball
db.collection1.update(
  {name:"xiaoming"},
  {$set:
    {
      gender:"male",
      prefer:"footBall"
    }
  })

替换现有的id=sfsfse35的文档
db.collection1.save({id:"sfsfse35",name:"nobody",home:"here"})

建索引
db.collection.ensureIndex({"name":1})

删索引
db.collection.dropIndex({"name":1})

查看索引
db.collection.getIndexes()



运维



备份(完全备份)
mongodump [-h serverhost] -d database(要备份的数据库) -o path(备份存放路径)

还原
mongorestore -d database(还原后的数据库名) [--drop 还原前删除原有collection] path(备份文件所在路径)

备份单个collection
mongoexport -d database -c collection(要备份的文档) -o file(备份到文件)

回复单个collection
mongoimport -d dbhost -c collectionname [–type (default: json (json,csv,tsv))] [–headerline(不导入第一行)] –file filename

给数据库加写入锁(备份前可已上锁)
db.runCommand({"fsync":1,"lock":1})

解锁
db.$cmd.sys.unlock.findOne()

查看当前锁状态
db.currentOp()

关闭服务
db.shutdownServer()

查看集合读写占用时间
mongotop

查看锁
db.serverStatus()

查看集合锁
db.collection.status()


聚合查询

表达式            描述                实例
$sum 总结从集合中的所有文件所定义的值. db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 从所有文档集合中所有给定值计算的平均. db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 获取集合中的所有文件中的相应值最小. db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 获取集合中的所有文件中的相应值的最大. db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push 值插入到一个数组生成文档中. db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet 值插入到一个数组中所得到的文档,但不会创建重复. db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first 根据分组从源文档中获取的第一个文档。通常情况下,这才有意义,连同以前的一些应用 “$sort”-stage. db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last 根据分组从源文档中获取最后的文档。通常,这才有意义,连同以前的一些应用 “$sort”-stage. db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])


猜你喜欢

转载自744722813.iteye.com/blog/2265209