MongoDB学习笔记~客户端命令行的使用

回到目录

当我们从MongoDB网站下载安装包之后,它会伴随有一系列的工具,服务器程序mongod是我们耳熟能详的了,客户端mongo和性能检测mongostat我们可能就没有用过了,今天主要是介绍一下mongo这个客户端命令行工具的使用。

测试环境:服务端:linux版的mongod 2.6.9

              客户端:window版的mongo 2.6.9

下面介绍一些常用的命令

1 建立一个新的链接

var x=new Mongo("192.168.2.4:27017")

2 显示所有数据库

show dbs

3 指定当前要使用的数据库

var db=x.getDB("background")

4 得到当前数据库的名称

db.getName()

5 得到数据库的所有集合

db.getCollectionNames()

6 得到数据库中集合的详细信息

db.getCollectionInfos()

7 得到指定的集合

db.getCollection("background")

8 得到集合中元素的数量

db.getCollection("background").count()

9 得到服务器相关信息

db.hostInfo()

10 得到当前Mongo服务器的连接信息

db.getMongo()

11 为排序和查询的字段添加索引

了解数据库的朋友对索引应该不会陌生吧,当数据量比较小时,它起不到什么作用,当数据量大时500W以上,你的字段就需要加索引了,性能提升相当的明显,如果你不加,那你就等着昙花开吧,呵呵!

db.TableName.ensureIndex({FieldName:1})//1为升序,-1为降序
db.TableName.getIndexes()

12 删除索引

db.TableName.dropIndex({"LoginName":1})

13 查看数据表的状态,同步显示分片的状态和每个片被命中的数量

db.WebManageUsers.stats()

14 查看数据库的状态,它会把相关分片的信息显示出来

db.stats()

15 在路由服务器查询分片完整的信息

var db=x.getDB("admin");
db.runCommand({listshards:1});//需要在admin数据库下

16 设置数据库的分片状态,让它生效

#指定databaseName分片生效
db.runCommand( { enablesharding :"databaseName"});

17 设置数据库下的数据表(Collection)分片状态,让它生效

#指定数据库里需要分片的集合和片键
db.runCommand( { shardcollection : "databaseName.tableName",key : {_id: 1} } )

18 对数据表进行分组

db.tableName.aggregate([{ "$group" : { "_id" : "$DepartmentID", "userCount" : { "$sum" : 1 } } }])

19 分组第二种方法group强大命令

db.M_Partner_Footprints.group({
    key: function (doc) { PartnerInfoID: true },//分组的key
    cond: { PartnerInfoID: 6, Login: { ClientType: 0 } },//条件过滤
    initial: { "count": 0 },
    reduce: function (doc, out) {//聚合方式
        out.count += 1;
    },
    finalize: function (out) {//结果处理
        return out;
    }
});

20 group对多个字段进行分组,使用keyf函数来实现

db.M_User_Footprints.group({
    keyf: function (doc) { return { UserInfoID: doc.UserInfoID, TeacherID: doc.TeacherID } },
    cond: { UserInfoID: 6, Type: 6 },
    initial: { "count": 0 },
    reduce: function (doc, out) {
        out.count += 1;
    },
    finalize: function (out) {
        return out;
    }
});

22 使用aggregate进行聚合操作

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

23 管道,MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。

一 $project选择指定的列,_id被默认选中

db.M_User_Footprints.aggregate(
    {
        $project: {
            UserInfoID: 1,
            TeacherID: 1,
        }
    }
 );

二 $match选择某个范围的数据,并将结果传到下一个管道中

db.M_User_Footprints.aggregate([
                        { $match: { UserInfoID: { $gt: 1, $lte: 100 } } },
                        { $group: { _id: null, count: { $sum: 1 } } }
]);

各位对索引一定要引起重视,因为在大数据情况下,如果没有索引,在进行排序,查询等操作时就引发全表扫描,那代价是非常大的!

回到目录

更多相关文章
  • 官网下载yii最新版本的压缩包:http://www.yiiframework.com/ 解压到指定文件夹下, 找到yii根目录下的framework文件夹 然后找到yiic.bat文件 两种情况: 一.自己手动安装和配置php的情况 cmd打开命令行窗口,将yiic.bat拖拽到命令行窗口,或者直 ...
  •  2014-10-09:更新裁剪反应堆具体用法 说明: 1.使用-选项时,和后面的参数之间可以不要空格.而使用--选项时,和后面的参数之    间必须有空格.如下面的例子:  $ mvn help:describe -Dcmd=compiler:compile  $ mvn install --de ...
  • 首先要启动MongoDB shell工具,即bin下的mongo.exe常用shell命令如下:1.查询本地所有数据库名称> show dbs;2.切换至指定数据库环境(若无指定的数据库,则创建新的库)> use dbtest;切换至dbtest库或创建名为dbtest的库3.查询当前库 ...
  • 回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助和启发,文章中有对新技术的研究(Mongo驱动),对老技术的回顾(代码重构),还有对架构设计的阐述等 ...
  • [MongoDB学习笔记1]基于CentOS 6.5安装MongoDBhttp://281816327.blog.51cto.com/907015/1598270[MongoDB学习笔记2]MongoDB基本知识http://281816327.blog.51cto.com/907015/15982 ...
  • MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系MongoDB学习笔记(五) ...
  • 回到目录 Redis学习笔记已经告一段落,Redis仓储也已经实现了,对于key/value结构的redis我更愿意使用它来实现数据集的缓存机制,而对于结构灵活,查询效率高的时候使用redis就有点不太合适了,对于以文档结构(document)实现存储的MongoDB来实现数据集的查询更合适一些,并 ...
  • 回到目录 关于官方驱动集成IQueryable之后的一些事,有好事也有坏事,好事就是它会将你的linq语句非常友好的翻译成MongoDB语句,而坏事就是有一些linq语句不会被翻译,不会被翻译的代价就是将整个结果集装到内存,然后进行linq to object的查询,效率自然是非常低的,呵呵. 好事 ...
一周排行
  • NSRange的定义typedef struct _NSRange{NSUInteger location;NSUInteger length;} NSRange;NSRange是一个结构体,其中location是一 ...
  •    今天委领导的那几层的接入交换机电源坏掉了,赶紧的拿了个备用的配好备份配置就立马跑去换.    换交换机倒是没用多久,换好就赶紧接console线检查配置有没有问题.    突然发现,access口能正常访问,但 ...
  • 三者都有把元素移除的作用,但细微的差别,造就了它们的使命不同. 最权威的解释当然是jQuery_API咯,下面是API中关于他三儿的部分截取. 一.empty: This method removes not onl ...
  • 文章内容中介绍的MySQL数据库服务器初始化步骤,是本人曾经在呆过的某著名电子商务公司的工作中,摸索而总结的服务器初始化步骤,不过是根据遗留的部分内容,外加回忆而重新整理成文章,供大家工作中参考.   l  风险性操 ...
  • 网上找的资料,下载addusers和copypwd2个工具,使用前先看最后的提示!!==========================1.将 addusers.exe.copypwd.exe.copypwd.dll ...
  • CentOS 6.3编译安装Nginx1.2.2+MySQL5.5.25a+PHP5.4.5准备篇:一.配置好IP.DNS .网关,确保使用远程连接工具能够连接服务器      CentOS 设置IP地址.网关.DN ...
  • 在安装SQL SERVER 2000时出现如下的提示:    “以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机.”      按照提示重启计算机,再安装,仍然出现同样的提示. ...
  • 在默认情况下,Struts2只自动加载类加载路径下的struts.xml.default-struts.xml和struts-plugin.xml三类文件.但是随着应用规模的增大,系统中Action数量也大量增加,将 ...
  • DNS服务器配置:正反解析,主从服务器,子域授权,控制列表,bind view配置前的设置:在172.16.59.1服务器上安装bind: 配置好yum源后,用 # yum install bind 安装启用name ...
  • 选择站点,并双击右侧页面上ASP的选项IIS7中ASP父路径是没有启用的,要开启父路径,选择True,搞定父路径选项.对应站点目录的IUSR的权限没设造成的...在属性——>安全——> 高级 中把IUSR ...