mong命令学习记录

简介:

一值想总结关于mongo的命令,可能是时间问题,也是自己拖延问题,更是自己懒惰问题导致迟迟没有更新这篇文章,接下来我们就来一个一个说吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
1. #创建用户,如果在admin库创建帐号,用户角色为root;如果在其他库下创建的帐号,用户角色为dbOwner
db.createUser( 'username' , 'passwd'
2. #查看某个用户的角色
db.getUser( 'sa'
3. #赋予某个用户在某个数据库上有某个角色
db.grantRolesToUser( "username" ,[{ role:  "dbOwner(角色)" , db:  "DBname(数据库名字)"  } ]) 
4. #取消某个用户在某个数据库上的某个角色
db.revokeRolesFromUser(  "username"  , [ { role:  "dbOwner(角色)" , db:  "DBname(数据库名字)"  } ])
5. #用户验证,返回1为验证成功,返回0为验证失败
db.auth( 'username' , 'passwd' )   
6. #进入某个数据库
use DBname
7. #查看所有用户信息
db.system. users . find ();
8. #删除某个用户
db.removeUser( "xzsp" )
9. #修改用户密码,普通用户只能修改自己的密码,userAdmin角色帐号可以修改其他用户密码
   # 如果用户不存在修改失败,提示用户未找到;如果用户存在什么都不提示,默认修改成功
db.changeUserPassword( 'username' , 'passwds' )
10. #显示数据库列表 
show dbs
11. #显示当前数据库中的集合(类似关系数据库中的表)
show collections
12. #显示当前用户
show  users
13.  #显示数据库操作命令,里面有很多的命令 
db.help()
14. #显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令 
db.foo.help()
15. #对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) 
db.foo. find ()
16. #对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
db.foo. find ( { a : 1 } ):

数据库操作命令

MongoDB没有创建数据库的命令,但有类似的命令。

如:如果你想创建一个“myTest”的数据库,线运行use myTest命令,之后做一些操作(如:

db.createCollection('user')),这样就可以创建一个名叫“myTest”的数据库了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1. #Help查看命令提示
help
   db.help();
   db.yourColl.help();
   db.youColl. find ().help();
   rs.help();
2. #切换/创建数据库
use yourDB;  当创建一个集合(table)的时候会自动创建当前数据库
3. #查询所有数据库
show dbs;
4. #删除当前使用数据库
db.dropDatabase();
5. #从指定主机上克隆数据库
db.cloneDatabase( "127.0..0.1" );将指定机器上的数据库的数据克隆到当前数据库
6. #从指定的机器上复制指定数据库数据到某个数据库
db.copyDatabase( "mydb" , "temp" , "127.0.0.1" );将本机的mydb的数据复制到temp数据库中
7. #修复当前数据库
db.repairDatabase();
8. #查看当前使用的数据库
db.getName();
9. #显示当前的db状态
db.stats();
10. #当前db版本
db.version();
11. #查看当前db的连接机器地址
db.getMongo()

Collection聚集集合操作命令

1
2
3
4
5
6
1. #创建一个聚集集合(table)
db.createCollection( 'collName' ,{size:20,capped:5,max:100});
2. #查看当前db的所有集合
db.getCollectionNames();
3. #显示当前db所有集合索引的状态
db.printCollectionStats();

用户相关

1
2
3
4
5
6
7
8
9
1. #添加一个用户
db.addUser( 'name' );
db.addUser( 'userName' , 'pwd123' , true );添加用户、设置密码、是否只读
2. #数据库认证、安全模式
db.auth( "username" , 'Passwd' )
3. #显示当前所有用户
show  users ;
4. #删除用户
db.removeUser( 'UserName' );

查看聚合集合的基本信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1. #查看帮助
db.yourColl.help();
2. #查询当前集合的数据条数
db.yourColl.count();
3. #查看数据空间大小
db.userInfo.dataSize();
4.得到当前集合所在的db
db.userInfo.getDB();
5. #得到当前集合的状态
db.userInfo.stats();
6. #得到集合总大小
db.userInfo.totalSize();
7. #集合存储空间大小
db.userInfo.storageSize()
8. #Shard版本信息
db.userInfo.getShardVersion()
9. #集合重命名
db.userInfo.renameCollection( "users" );将userInfo重命名为 users
10. #删除当前集合
db.userInfo.drop();

集合查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
1. #查询所有记录
  db.userInfo. find ();
#相当于:select * from userInfo;
#默认每页显示20条记录,当显示不下的情况下,可以用it迭代期命令查询下一页数据。注意:键入it命
#不能带";"但是你可以设置每页显示数据的大校,用DBQuery.shellBatchSize = 50;这样每页显示50
#条记录了。
2. #查询去掉后的当前集合中的某列的重复数据
  db.userInfo.distinct( "name" );
相当于 select  distict name from userinfo;
3. #查询age = 22的记录
  db.userInfo. find ({ "age" : 22});
  相当于:  select  * from userInfo where age = 22;
4. #查询age > 22的记录
  db.userInfo. find ({age: {$gt: 22}});
  相当于: select  * from userInfo where age >22;
5. #查询age < 22的记录
  db.userInfo. find ({age: {$lt: 22}});
相当于: select  * from userInfo where age <22;
6. #查询age >= 25的记录
  db.userInfo. find ({age: {$gte: 25}});
相当于: select  * from userInfo where age >= 25;
7. #查询age <= 25的记录
db.userInfo. find ({age: {$lte: 25}});
8. #查询age >= 23 并且 age <= 26
db.userInfo. find ({age: {$gte: 23, $lte: 26}}); 
9. #查询name中包含 mongo的数据
db.userInfo. find ({name:  /mongo/ });
// 相当于%%
select  * from userInfo where name like ‘%mongo%’; 
10. #查询name中以mongo开头的
db.userInfo. find ({name: /^mongo/});
select  * from userInfo where name like ‘mongo%’;
11. #查询指定列name、age数据
db.userInfo. find ({}, {name: 1, age: 1});
相当于: select  name, age from userInfo;
当然name也可以用 true false ,当用ture的情况下河name:1效果一样,如果用 false 就是排除name,显示name以外的列信息。 
12. #查询指定列name、age数据, age > 25
db.userInfo. find ({age: {$gt: 25}}, {name: 1, age: 1});
相当于: select  name, age from userInfo where age >25;
13. #按照年龄排序
升序:db.userInfo. find (). sort ({age: 1});
降序:db.userInfo. find (). sort ({age: -1}); 
14. #查询name = zhangsan, age = 22的数据
db.userInfo. find ({name:  'zhangsan' , age: 22});
相当于: select  * from userInfo where name = ‘zhangsan’ and age = ‘22’;
15. #查询前5条数据
db.userInfo. find ().limit(5);
相当于:selecttop 5 * from userInfo;
16. #查询10条以后的数据
db.userInfo. find ().skip(10);
相当于: select  * from userInfo where  id  not  in  (
selecttop 10 * from userInfo
);
17. #查询在5-10之间的数据
db.userInfo. find ().limit(10).skip(5);
可用于分页,limit是pageSize,skip是第几页*pageSize
18. #or与 查询
db.userInfo. find ({$or: [{age: 22}, {age: 25}]});
相当于: select  * from userInfo where age = 22 or age = 25;
19. #查询第一条数据
db.userInfo.findOne();
相当于:selecttop 1 * from userInfo;
db.userInfo. find ().limit(1);
20. #查询某个结果集的记录条数
db.userInfo. find ({age: {$gte: 25}}).count();
相当于: select  count(*) from userInfo where age >= 20;
如果要返回限制之后的记录数量,要使用count( true )或者count(非0) 
db. users . find ().skip(10).limit(5).count( true );
21. #按照某列进行排序
db.userInfo. find ({sex: {$exists:  true }}).count();
相当于: select  count(sex) from userInfo;

索引

1
2
3
4
5
6
7
8
9
10
11
12
13
1. #创建索引
  db.userInfo.ensureIndex({name: 1});
  db.userInfo.ensureIndex({name: 1, ts: -1});
2. #查询当前聚集集合所有索引
  db.userInfo.getIndexes();
3. #查看总索引记录大小
  db.userInfo.totalIndexSize();
4. #读取当前集合的所有index信息
  db. users .reIndex();
5. #删除指定索引
  db. users .dropIndex( "name_1" );
6. #删除所有索引索引
  db. users .dropIndexes();

修改、添加、删除集合数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1.添加
db. users .save({name: ‘zhangsan’, age: 25, sex:  true });
添加的数据的数据列,没有固定,根据添加的数据为准
2.修改
db.collection.update(criteria, objNew, upsert, multi )
criteria:update的查询条件,类似sql update查询内where后面的
objNew:update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内 set 后面的。
upsert : 如果不存在update的记录,是否插入objNew, true 为插入,默认是 false ,不插入。
multi : mongodb默认是 false ,只更新找到的第一条记录,如果这个参数为 true ,就把按条件查出来多条记录全部更新。
db. users .update({age: 25}, {$ set : {name:  'changeName' }},  false true );
相当于:update  users  set  name = ‘changeName’ where age = 25;
db. users .update({name:  'Lisi' }, {$inc: {age: 50}},  false true );
相当于:update  users  set  age = age + 50 where name = ‘Lisi’;
db. users .update({name:  'Lisi' }, {$inc: {age: 50}, $ set : {name:  'hoho' }},  false true );
相当于:update  users  set  age = age + 50, name = ‘hoho’ where name = ‘Lisi’;
3.删除
db. users .remove({age: 132});









本文转自 xinsir999 51CTO博客,原文链接:http://blog.51cto.com/xinsir/1902910,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
Web App开发 JavaScript 前端开发
为掘金编写了一款简易版一键三连的油猴脚本(二)
为掘金编写了一款简易版一键三连的油猴脚本(二)
145 0
|
6月前
|
前端开发 JavaScript 开发者
为掘金编写了一款简易版一键三连的油猴脚本(一)
为掘金编写了一款简易版一键三连的油猴脚本
172 0
|
存储 Kubernetes 网络协议
k8s命令扫盲
k8s命令扫盲
273 0
|
Linux Python Perl
生信人必备的Linux命令(2/完结)
生信人必备的Linux命令(2/完结)
106 0
【p4】perforce命令笔记
【p4】perforce命令笔记
193 0
【p4】perforce命令笔记
|
消息中间件 缓存 Kafka
【随笔】学习记录、实用脚本
文章目录 工作随笔 一、kafka 1.1 基础命令 二、es 1.1 基础命令 三、实用小脚本 3.1 判断文件中是否有某个对应的值
106 0
【随笔】学习记录、实用脚本
学妹拉着我的胳膊让我给她写个【显示当前时间的shell脚本】,顺手教教学妹【硬链接和软链接】
学妹拉着我的胳膊让我给她写个【显示当前时间的shell脚本】,顺手教教学妹【硬链接和软链接】
学妹拉着我的胳膊让我给她写个【显示当前时间的shell脚本】,顺手教教学妹【硬链接和软链接】
|
运维 Linux Shell
学习Linux运维必备的50个命令(二)
学习Linux运维必备的50个命令
189 0
|
运维 安全 Linux
学习Linux运维必备的50个命令(一)
学习Linux运维必备的50个命令
183 0
|
Shell Linux Perl
《Linux命令行与shell脚本编程大全》第二十六章 一些有意思的脚本
26.1 发送消息 26.1.1 功能分析 1.确定系统中都有谁 $who 给出的信息包括用户名 用户所在终端 用户登入系统的时间   2.启用消息功能 用户可以禁止别人给我发消息,所以需要先检查一下是否允许发送消息。
1178 0
下一篇
无影云桌面