MongoDB 命令

作者: 疯狂小兵 | 2016-04-18 | 阅读
「编辑」 「本文源码」

RDBMS和mongodb的对应术语

RDBMS MongoDB
数据库 数据库
集合
文档
字段
表联合 嵌入文档
主键 主键

1.显示所有的数据库

管理员可用

只要是管理员,在哪一个数据库下操作都无所谓

show dbs

2.显示当前的数据库

db

3.切换数据库或创建数据库

如果数据库不存在则创建数据库,存在则直接切换

use admin ##admin 为指定的数据库名

4. 删除当前数据库

db.dropDatabase()

5. 数据库中插入文档

db.test.insert(

	{
		name:"test3",
		age:12,
		sex:false
	}

)

如果当前字段不存在, 数据库会自动创建。如果当前字段已经没有值了,则不会显示

6. 查询已经存在的数据

查询指定条件的文档

db.test.find({name:"test3"})

查询所有文档

db.test.find()

格式化显示查询的所有文档

db.test.find().pretty()

插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

7.更新文档

{name:”test4”} 相当于 RDBMS中的where name=’test4’

{$set:{name:”test4_modify”}} 相当于RDBMS中的set name=’test4_modify’

db.test.update({name:"test4"},{$set:{name:"test4_modify"}})

7.1其他更新文档操作

只更新第一条记录:

db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

全部更新:

db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

只添加第一条:

db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

全部添加加进去:

db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

全部更新:

db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

只更新第一条记录:

db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

8.删除文档

8.1根据id删除文档

 db.test.remove({_id:ObjectId("54c955492b7c8eb21818bd09")})

8.2 删除当前数据库的所有文档

db.test.remove({})

9.$type 操作符

查询String 类型的title

db.test.find({"title" : {$type : 2}})、

10.limit()和skip()

limit:限制最大查询数量,skip,跳过查询到的前n条数据

db.test.find({"title" : {$type : 2}}).skip(1).limit(2)	

11.sort()排序

1:升序,-1:降序

将查询出的数据升序排列

 db.test.find({"title" : {$type : 2}}).sort({likes:1})

12.ensureIndex() 创建索引

创建单个字段索引

db.test.ensureIndex({"title":1}	)

创建多个字段索引(复合索引[RDBMS])

db.test.ensureIndex({"title":1,"description":-1})

后台创建索引

db.test.ensureIndex({"title":1,"description":-1}, {background: true})

13.aggregate()聚合

对应RDBMS中的聚合函数

根据by_user分组查询,并将相同值求和.

db.test.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])

14.$project、$match、$group 显示指定的字段

相当于select后查询的字段

默认中的_id字段是被包含的,设置1为包含,0为不包含

db.test.aggregate({$project:{"_id":0,title:1}})

匹配likes>100的记录,跳过前两条记录,并只显示likes和_id两个字段:

db.test.aggregate( [ { $match: { likes:{ $gt:100 } } }, { $project:{ likes:1 } } , { $skip:2 } ])

15.mongodb副本集

服务端启动名为rs0的mongodb实例:

 mongod --port 27117 --dbpath "/data/db" --replSet rs0

客户端:

mongo -u root -p 123456 --port 27117

端口号需要一致

启动新的副本集

> rs.initiate()

将mongod1.net:27017添加到副本集中,mongod1.net为主机地址,27017为端口号

>rs.add("mongod1.net:27017")

16.Mongodb备份

-h :host:port

-d : dbname

-o :备份的位置,目录必须已经存在

 mongodump -h 192.168.31.100:27117  -d test -o /var/mongodb-dump

17.Mongodb数据恢复

-h :host:port

-d : dbname

-directoryperdb :备份的位置

–drop :恢复的时候,先删除当前数据,然后恢复备份的数据

>mongorestore -h dbhost -d dbname --directoryperdb dbdirectory 

18.MongoDB监控

mongostat -u root -p 123456 --authenticationDatabase=test --port 27117
 
 
mongotop -u root -p 123456 --authenticationDatabase=test --port 27117

版权声明:本文由 在 2016年04月18日发表。本文采用CC BY-NC-SA 4.0许可协议,非商业转载请注明出处,不得用于商业目的。
文章题目及链接:《MongoDB 命令》




  相关文章:

「游客及非Github用户留言」:

「Github登录用户留言」:

TOP