mongodb常用命令

134 阅读2分钟

mongo

前言

最近在学习nest,采用mongo数据库,整理了以下的快查手册。

进入

  • mongo 进入mongo命令
  • help 帮助
  • exit 退出
  • mongo 数据库名 快速进入数据库
  • 备份
    • mkdir dbbak 创建
    • mongodump -d 数据库名 备份
    • mongorestore --drop 恢复(注意在备份的文件内)
    • mongodump --help 帮助

  • show dbs 查看数据库
  • show collections 查看集合
  • db.stats() 查看当前数据库信息
  • db.集合名.count() 查看集合有多少数据
    • 集合名可以是数组 db[ 集合1,集合2 ].yyy()
  • db.集合名.find() 查看集合 ( ) ps:( { } )对象内标识取文档的格式
$gte >=   $gt >  $lte <=  $lt < $eq =  $ne !=
$in过滤   $exists过滤是否有xxx key的   
- db.集合名.find({rank:{$gte:4} }) //取出rank值>=4的
- db.集合名.find({tit:/u/ , rank:{$gte:2}}) //条件可多个
- db.集合名.find({tit:/u/}) //取出tit中带有u的 ( /u/正则表达式 )
- db.集合名.find({$or:[{tit:/u/},{rank:{$gte:1}}]})//tit带u或rank>=1
- db.集合名.find({rank:{$in:[3,4]}}) //rank是3和4的
- db.集合名.find({show:{$exists:true}}) //拿到有show属性key(mongo支持不对称的表头key)
- db.集合名.find({},{tit:true,rank:1})//拿到指定的字段tit,rank.true和1是一样的
   - db.集合名.find({},{tit:true,rank:1,_id:0}) //不想要id   _id:0
  • db.集合名.distinct( 'xxx ' ) 排序 取出唯一的值(查看有几种分类)
  • db.集合名.find( 'xxx ' ).sort( { xx : 1 } ) 在查询出来后的结果按照升序(1)排列,降序(-1)
  • db.集合名.find( 'xxx ' ).limit( x ) 在查询结果默认顺序取出前x个,与sort搭配
    • db.posts.find({tit:{$exists:1},rank:{$exists:1}},{tit:1,rank:1}).sort({rank:1}).limit(3)
  • db.集合名.findOne( 'xxx ' ) 默认顺序的第一条 等同于.limit( 1 )
    • db.posts.findOne({tit:{$exists:1},rank:{$exists:1},rank:{$eq:3}},{tit:1,rank:1})
  • db.集合名.find( 'xxx ' ).skip( x ) 在查询结果默认顺序跳过x个 与limit配合分页
    • db.posts.find({tit:{$exists:1},rank:{$exists:1}}).skip(2).limit(2) skip-1页码limit页多少个
  • db.集合.getIndexes() 查看索引

  • use 数据库名 进入数据库,没有会创建(刚刚创建完成由于内部没有集合会看不到)
  • db.createCollection('集合名') 创建集合(当集合创建后 dbs就可看到数据库了)
  • db.集合名.insert( { } ) 在集合中插入对象
  • db.集合名.update({ },{ $set:{ }},{ }) 有则修改 无则添加
  • db.集合名.update( { } , { },{ upsert:true }) 有则更新 无则添加 注意: 第一个{}(假的即可)需要给,为空则修改第一条
  • db.集合名.createIndex({rank:1}) 创建rank的升序索引
    • db.posts.createIndex({rank:1},{unique:true}) 代表唯一

  • db.dropDatabase() 删除当前数据库
  • db.集合名.drop() 删除集合
  • db.集合名.remove( { } ) 删除数据 {}不规定是全部删除,可{tit:'123'}(删除tit是123的数据)
  • db.集合名.update({tit:'demo'},{ $unset:{rank:1}}) 删除文档字段
  • db.集合名.dropIndex({rank:1}) 删除rank的升序索引

  • db.集合名.renameCollection('要改的集合名') //修改集合名
  • db.集合名.update( { 过滤 } , { 修改内容 } , { 操作 }) //修改操作文档
$xxx 函数     $set 严格指定tit字段,没有则添加
$inc 递增     $mul 相乘    $rename 改名   $unset 删除字段
upsert 操作项目(有则改无则加)
- db.posts.update({rank:1},{$set:{tit:'11111111'}})   //$set 严格指定tit字段
- 不加 $set 为替换,危险操作!!! 上方如不加$set则代表将整条数据替换为只有tit:'11111111'
- 如果没有对应字段 则为添加
- db.posts.update({type:'it'},{$set:{tit:'typeititititititit'}}) // 注意非字面意思 不会更新所有type是it的  只会更新第一条
- db.posts.update({type:'it'},{$set:{tit:'typeititititititit'}},{multi:true}) //multi:true多条更新
- db.posts.update({rank:2},{$inc:{rank:100}}) //在rank等于2数据rank字段加100
- db.posts.update({tit:'demo'},{$mul:{rank:2}}) 
- db.posts.update({show:true},{$rename:{show:'isShow'}})
- db.posts.update({tit:'demo'},{$unset:{rank:true}}) //true可用1替代
- db.posts.update({tit:'2222222222'},{rank:222,type:'game'},{upsert:1})
   //上方代表看看 有没有tit为2222222的,有就改成中间{}这样,无就添加中间{}
	 //第一个{}(假的即可)需要给,为空则修改第一条
   //注意: 中间{} 是替换上去,不会自动合并字段

  • mongo采用js语法,用js思维理解
  • db 开头后面是函数 记得()执行
  • db.xxx 可以直接.xxx进行引用 (json对象)
  • find( { '' , '' }, { } ) 查询时 ( )内 , 左侧{}筛选 ( )内 , 右侧{}文档操作
  • 查询采用js对象思维, 条件可自由组合