表的帮助,格式:db.表名.help()

db.test.find({id:10})          返回test数据集ID=10的数据集  
db.test.find({id:10}).count()  返回test数据集ID=10的数据总数  
db.test.find({id:10}).limit(2) 返回test数据集ID=10的数据集从第二条开始的数据集  
db.test.find({id:10}).skip(8)  返回test数据集ID=10的数据集从0到第八条的数据集  
db.test.find({id:10}).limit(2).skip(8)  返回test数据集ID=1=的数据集从第二条到第八条的数据  
db.test.find({id:10}).sort()   返回test数据集ID=10的排序数据集  
db.test.findOne([query])       返回符合条件的一条数据  
db.test.getDB()                返回此数据集所属的数据库名称  
db.test.getIndexes()           返回些数据集的索引信息  
db.test.group({key:...,initial:...,reduce:...[,cond:...]})    返回分组信息  
db.test.mapReduce(mayFunction,reduceFunction,<optional params>)  这个有点像存储过程  
db.test.remove(query)                      在数据集中删除一条数据  
db.test.renameCollection(newName)          重命名些数据集名称  
db.test.save(obj)                          往数据集中插入一条数据  
db.test.stats()                            返回此数据集的状态  
db.test.storageSize()                      返回此数据集的存储大小  
db.test.totalIndexSize()                   返回此数据集的索引文件大小  
db.test.totalSize()                        返回些数据集的总大小  
db.test.update(query,object[,upsert_bool]) 在此数据集中更新一条数据  
db.test.validate()                         验证此数据集  

db.test.getShardVersion()                  返回数据集共享版本号

db的帮助文档

db.AddUser(username,password[, readOnly=false])  添加用户  
db.auth(usrename,password)     设置数据库连接验证  
db.cloneDataBase(fromhost)     从目标服务器克隆一个数据库  
db.commandHelp(name)           returns the help for the command  
db.copyDatabase(fromdb,todb,fromhost)  复制数据库fromdb---源数据库名称,todb---目标数据库名称,fromhost---源数据库服务器地址  
db.createCollection(name,{size:3333,capped:333,max:88888})  创建一个数据集,相当于一个表  
db.currentOp()                 取消当前库的当前操作  
db.dropDataBase()              删除当前数据库  
db.eval(func,args)             run code server-side  
db.getCollection(cname)        取得一个数据集合,同用法:db['cname'] or  
db.getCollenctionNames()       取得所有数据集合的名称列表  
db.getLastError()              返回最后一个错误的提示消息  
db.getLastErrorObj()           返回最后一个错误的对象  
db.getMongo()                  取得当前服务器的连接对象get the server  
db.getMondo().setSlaveOk()     allow this connection to read from then nonmaster membr of a replica pair  
db.getName()                   返回当操作数据库的名称  
db.getPrevError()              返回上一个错误对象  
db.getProfilingLevel()         获取profile level  
db.getReplicationInfo()        获得重复的数据  
db.getSisterDB(name)           get the db at the same server as this onew  
db.killOp()                    停止(杀死)在当前库的当前操作  
db.printCollectionStats()      返回当前库的数据集状态  
db.printReplicationInfo()        打印主数据库的复制状态信息  
db.printSlaveReplicationInfo()        打印从数据库的复制状态信息  
db.printShardingStatus()       返回当前数据库是否为共享数据库  
db.removeUser(username)        删除用户  
db.repairDatabase()            修复当前数据库  
db.resetError()  
db.runCommand(cmdObj)          run a database command. if cmdObj is a string, turns it into {cmdObj:1}  
db.setProfilingLevel(level)    设置profile level 0=off,1=slow,2=all  
db.shutdownServer()            关闭当前服务程序  
db.stats()                       返回当前数据库的状态信息
db.version()                   返回当前程序的版本信息

一、数据库常用命令
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();
db; db和getName方法是一样的效果,都可以查询当前使用的数据库

9、显示当前db状态

复制代码 代码如下:
db.stats();

10、当前db版本

复制代码 代码如下:
db.version();

11、查看当前db的链接机器地址

复制代码 代码如下:
db.getMongo();

二、Collection聚集集合
1、创建一个聚集集合(table)

复制代码 代码如下:
db.createCollection(“collName”, {size: 20, capped: 5, max: 100});//创建成功会显示{“ok”:1}
//判断集合是否为定容量db.collName.isCapped();

2、得到指定名称的聚集集合(table)

复制代码 代码如下:
db.getCollection("account");

3、得到当前db的所有聚集集合

复制代码 代码如下:
db.getCollectionNames();

4、显示当前db所有聚集索引的状态

复制代码 代码如下:
db.printCollectionStats();

三、用户相关
1、添加一个用户

复制代码 代码如下:
db.addUser("name");
db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读

2、数据库认证、安全模式

复制代码 代码如下:
db.auth("userName", "123123");

3、显示当前所有用户

复制代码 代码如下:
show users;

4、删除用户

复制代码 代码如下:
db.removeUser("userName");

四、聚集集合查询
1、查询所有记录

复制代码 代码如下:
db.userInfo.find();
相当于:select* from userInfo;

默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;”
但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSize= 50;这样每页就显示50条记录了。
2、查询去掉后的当前聚集集合中的某列的重复数据

复制代码 代码如下:
db.userInfo.distinct("name");
会过滤掉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/});
//相当于%%
[code]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;

21、按照某列进行排序

复制代码 代码如下:
db.userInfo.find({sex: {$exists: true}}).count();
相当于:select count(sex) from userInfo;

五、索引
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、添加

复制代码 代码如下:
db.users.save({name: ‘zhangsan', age: 25, sex: true});

添加的数据的数据列,没有固定,根据添加的数据为准
2、修改

复制代码 代码如下:
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});

4、查询修改删除

复制代码 代码如下:
db.users.findAndModify({
    query: {age: {$gte: 25}},
    sort: {age: -1},
    update: {$set: {name: 'a2'}, $inc: {age: 2}},
    remove: true
});
db.runCommand({ findandmodify : "users",
    query: {age: {$gte: 25}},
    sort: {age: -1},
    update: {$set: {name: 'a2'}, $inc: {age: 2}},
    remove: true
});

update 或 remove 其中一个是必须的参数; 其他参数可选。
参数    详解     默认值
query    查询过滤条件    {}
sort    如果多个文档符合查询过滤条件,将以该参数指定的排列方式选择出排在首位的对象,该对象将被操作    {}
remove    若为true,被选中对象将在返回前被删除    N/A
update    一个 修改器对象
N/A
new    若为true,将返回修改后的对象而不是原始对象。在删除操作中,该参数被忽略。    false
fields    参见Retrieving a Subset of Fields (1.5.0+)
All fields
upsert    创建新对象若查询结果为空。 示例 (1.5.4+)
false
七、语句块操作
1、简单Hello World

复制代码 代码如下:
print("Hello World!");

这种写法调用了print函数,和直接写入"Hello World!"的效果是一样的;
2、将一个对象转换成json

复制代码 代码如下:
tojson(new Object());
tojson(new Object('a'));

3、循环添加数据

复制代码 代码如下:
> for (var i = 0; i < 30; i++) {
... db.users.save({name: "u_" + i, age: 22 + i, sex: i % 2});
... };

这样就循环添加了30条数据,同样也可以省略括号的写法

复制代码 代码如下:
> for (var i = 0; i < 30; i++) db.users.save({name: "u_" + i, age: 22 + i, sex: i % 2});

也是可以的,当你用db.users.find()查询的时候,显示多条数据而无法一页显示的情况下,可以用it查看下一页的信息;
4、find 游标查询

复制代码 代码如下:
>var cursor = db.users.find();
> while (cursor.hasNext()) {
    printjson(cursor.next());
}

这样就查询所有的users信息,同样可以这样写

复制代码 代码如下:
var cursor = db.users.find();
while (cursor.hasNext()) { printjson(cursor.next); }

同样可以省略{}号
5、forEach迭代循环

复制代码 代码如下:
db.users.find().forEach(printjson);

forEach中必须传递一个函数来处理每条迭代的数据信息
6、将find游标当数组处理

复制代码 代码如下:
var cursor = db.users.find();
cursor[4];

取得下标索引为4的那条数据
既然可以当做数组处理,那么就可以获得它的长度:cursor.length();或者cursor.count();
那样我们也可以用循环显示数据

复制代码 代码如下:
for (var i = 0, len = c.length(); i < len; i++) printjson(c[i]);

7、将find游标转换成数组

复制代码 代码如下:
> var arr = db.users.find().toArray();
> printjson(arr[2]);

用toArray方法将其转换为数组
8、定制我们自己的查询结果
只显示age <= 28的并且只显示age这列数据

复制代码 代码如下:
db.users.find({age: {$lte: 28}}, {age: 1}).forEach(printjson);
db.users.find({age: {$lte: 28}}, {age: true}).forEach(printjson);

排除age的列

复制代码 代码如下:
db.users.find({age: {$lte: 28}}, {age: false}).forEach(printjson);

9、forEach传递函数显示信息

复制代码 代码如下:
db.things.find({x:4}).forEach(function(x) {print(tojson(x));});

八、其他
1、查询之前的错误信息

复制代码 代码如下:
db.getPrevError();

2、清除错误记录

复制代码 代码如下:
db.resetError();

查看聚集集合基本信息
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();

复制代码 代码如下:
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

如对本文有疑问,请提交到交流社区,广大热心网友会为你解答!! 点击进入社区

 
 

最新评论

评论(4人参与0条评论)

 

来说两句吧...

mongo 常用操作命令的更多相关文章

  1. MongoDB(1):常用操作命令大全

    MongoDB常用操作命令大全(转) http://www.jb51.net/article/48217.htm 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操 ...

  2. 【转载】Linux中常用操作命令

    说明:开始学习linux系统,为了方便查看,特转载一篇Linux中常用操作命令,转载地址:http://www.cnblogs.com/laov/p/3541414.html 正文: Linux简介及 ...

  3. Git常用操作命令与图解

    Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone g ...

  4. svn 常用操作命令

    svn 常用操作命令 检出 svn checkout http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 svn checkout svn://路径(目录或文件 ...

  5. hadoop常用操作命令

    #############centos6.8IP常用操作命令#######################DEVICE=eth0TYPE=EthernetONBOOT=yesNM_CONTROLLED ...

  6. 2018.4.23 git常用操作命令收集(转)

    Git常用操作命令收集: 1. 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery.git 查看远程仓库:$ git remote -v ...

  7. HBase常用操作命令

    HBase常用操作命令 1.进入HBase脚本客户端 #hbase shell #进入HBase脚本客户端 > whoami    #查看当前登录用户 > status           ...

  8. Storm常用操作命令及WordCount

    Storm常用操作命令 1.任务提交命令:storm jar [jar路径] [拓扑包名.拓扑类名] [拓扑名称] storm jar /export/servers/storm/examples/s ...

  9. liunx vim常用操作命令

    vim常用操作命令 vim abc // 打开该文件,或者新建文件 vim +3 abc // 打开文件并跳转到第三行 vim +/hello //打开文件并跳转到第一次出现hello的位置 vim ...

随机推荐

  1. python 常用模块之os

    1.权限判断 bool: os.access('/python/test.py',os.F_OK) #是否存在 bool: os.access('/python/test.py',os.R_OK) # ...

  2. state.sls与state.highstate区别

    最近编写kubernetes的saltstack状态配置文件,在github上找到一个开源的salt文件,根据自己的需要,完成修改之后.执行部署测试 大致目录结构如下: |----k8s | |___ ...

  3. OpenLDAP介绍和安装

    LADP 1.目录服务 目录是一个为查询.浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样.目录数据库和关系数据库不同,它有优异的读性能,但写性 ...

  4. ElastAlert规则

    elastalert 是一款基于elasticsearch的开源告警产品(官方说明文档).相信许多人都会使用ELK做日志收集系统,但是产生一个基于日志的“优秀”的安全告警确是一个难题.告警规则难编写, ...

  5. 权限 mock location

    1.集成环信的时候,该权限报错: mock location权限是是“允许程序创建模拟位置”,主要是提供用于测试.打包的时候并不需要,所以解决办法分两步: 1.声明tools 2.添加忽略:

  6. iScroll使用方法

    最基本的iScroll使用结构 <div id="wrapper"> <ul> <li></li> ..... </ul> ...

  7. 微服务深入浅出(1)-- SpringBoot

    基于Spring的开发框架,旨在简化配置快速开发,是新一代web开发框架.下面介绍一下常用的几个功能: 1.Spring单元测试 针对DAO层 (1) @RunWith(Spring.class),表 ...

  8. 训练赛第一场D题

    解题报告:一开始不知道ATA的意思,后来才知道原来是转置矩阵乘以原来的矩阵.这题说起来比较麻烦就不说了,直接上代码: #include<cstdio> #include<cstrin ...

  9. shell作业后台执行的方法

    来思考几种场景: 1.某个脚本需要执行时间比较长,无人值守,可能执行过程中因ssh会话超时而中断? 2.某次测试一段代码,需要临时放入后台运行? 3.放入后台运行的脚本,需要在一段时间后重新调到前台? ...

  10. Halcon编程-基于形状特征的模板匹配

    halcon软件最高效的一个方面在于模板匹配,号称可以快速进行柔性模板匹配,能够非常方便的用于缺陷检测.目标定位.下面以一个简单的例子说明基于形状特征的模板匹配.      为了在右图中,定位图中的三 ...