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 <db name>:切换当前数据库,这和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
$in,$nin
e.g.
db.collection.find({field:{$in:array}});
db.collection.find({field:{$nin:array}});
是否存在
$exists
e.g.
db.collection.find({title:{$exists:true}}); //如果记录中有包含title属性的全部返回
db.collection.find({title:{$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 备份恢复