mongodb命令整理

1.连接mongodb

mongo 远程主机ip或DNS:MongoDB端口号/数据库名 -u user -p password
e.g.: mongo 192.168.1.200:27017/test -u user -p password
若在安装mongo的服务器上访问本地mongo,可直接执行 mongo
2.shell基本操作命令

show dbs:显示数据库列表
show collections:显示当前数据库中的集合(类似关系数据库中的表)
show users:显示用户
use :切换当前数据库,这和MS-SQL里面的意思一样
db.help():显示数据库操作命令,里面有很多的命令
db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合(表),并非真正意义上的命令
db.foo.find():对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据)
db.foo.find( { a : 1 } ):对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
db.foo.find({a:1},{column:0}) :后面的大括号代表返回字段过滤,column为列名,0代表只去掉该字段,1代表只保留该字段
cls 清屏
3.增

db.foo.insert({ “userId” : “testcustomer”})
4.删

–删除指定条件的数据
db.foo.remove({“userId” : “testcustomer”})
–清空表
db.foo.remove({})
–删除表
db.foo.drop()
–删除数据库
db.dropDatabase()
–注意,删除操作是永久性的,不可恢复的,所以删除前应该使用find确认删除数据

–另,mongodb删除集合后磁盘空间不释放,用db.repairDatabase()去修复才能释放。但是在修复的过程中如果出现了非正常的mongodb的挂掉,再次启动时启动不了的,需要先修复才可以,可以利用./mongod --repair --dbpath=/data/mongo/,如果你是把数据库单独的放在一个文件夹中指定dbpath时就指向要修复的数据库就可以,修复可能要花费很长的时间,在使用db.repairDatabase()去修复时一定要停掉读写,并且mongodb要有备机才可以,不然千万不要随便使用db.repairDatabase()来修复数据库,切记。
回收磁盘空间可以参考:http://blog.csdn.net/mchdba/article/details/8894344
5.改

db.foo.update({“userId” : “ordinary”},{’$set’:{“usermail” : “2012@qq.cn”}})
6.查

–此处主要记录特殊查询,mongodb语句和mysql sqlserver不同

大于,小于,大于等于,小于等于

$gt 大于 >
$lt 小于 <
$gte 大于等于 >=
$lte 小于等于 <=

e.g.
db.collection.find({age:{$gt:18}}); //年龄大于不包含18岁
SQL:SELECT * FROM Collection WHERE age>18
不等于

$ne 不等于 noe equals

e.g.
db.collection.find({age:{$ne:18}}) ;//年龄不等于18
in , not in

–in,not in
i n , in, in,nin

e.g.
db.collection.find({field:{KaTeX parse error: Expected 'EOF', got '}' at position 9: in:array}̲}); db.collecti…nin:array}});
是否存在

$exists

e.g.
db.collection.find({title:{KaTeX parse error: Expected 'EOF', got '}' at position 12: exists:true}̲}); //如果记录中有包含…exists:false}}); //如果记录中有包含title属性的全部不返回,不包含title属性的全部返回
正则表达式

db.collection.find( { name : /acme.*corp/i } ); // 后面的i的意思是区分大小写
非查询

$not

e.g.
db.collection.find( { name : { $not : /acme.*corp/i } } );
匹配内数组内的元素

$elemMatch

e.g.
如果对象有一个元素是数组,那么$elemMatch可以匹配内数组内的元素

t.find( { x : { $elemMatch : { a : 1, b : { $gt : 1 } } } } )

{ “_id” : ObjectId(“4b57833003340000999”),“x”:[{“a”:1,“b”:3},7,{“b”:99}, {“a”:11}]}
$elemMatch : { a : 1, b : { $gt : 1 } } 所有的条件都要匹配上才行。
区别于

t.find( { “x.a” : 1, “x.b” : { $gt : 1 } } )

$elemMatch是匹配{ “a” : 1, “b” : 3 },而后面一句是匹配{ “b” : 99 }, { “a” : 11 }
备份与恢复

mongodump -d test 备份数据库test到当前目录

mongorestore --drop 备份恢复

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值