一值想总结关于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,如需转载请自行联系原作者