好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

一个基于分布式文件存储的数据库MongoDB

一个基于分布式文件存储的数据库MongoDB

简介

  MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

编辑本段 特点

  它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

  *面向集合存储,易存储对象类型的数据。

  *模式自由。

  *支持动态查询。

  *支持完全索引,包含内部对象。

  *支持查询。

  *支持复制和故障恢复。

  *使用高效的二进制数据存储,包括大型对象(如视频等)。

  *自动处理碎片,以支持云计算层次的扩展性。

  *支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

  *文件存储格式为BSON(一种JSON的扩展)。

  *可通过网络访问。

编辑本段 使用原理

  所谓“面向集合”(Collection-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似 关系型数据库 (RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。

  模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。

  存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized dOcument Format)。

编辑本段 实际应用

  MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。

编辑本段 图书 MongoDB

基本信息

  作 者:(美) 霍多罗夫,(美) 迪洛尔夫 著,程显峰 译

  出 版 社: 人民邮电出版社

内容介绍

  

  

MongoDB

MongoDB如何帮你管理通过 Web 应用收集的 海量数据 呢?通过本书的权威解读,你会了解面向文档数据库的诸多优点,会发现MongoDB如此稳定、性能优越甚至能够无限水平扩展背后的原因。

  本书的两位作者均来自开发并支持开源数据库MongoDB的公司10gen。数据库开发人员可将此书作为参考指南, 系统管理员 可以从本书中找到高级配置技巧,其他用户可以了解一些基本概念和用例。你会发现,将数据组织成自包含的 JSON 风格的文档比组织成关系型数据库中的记录要容易得多。

目录

  中文版序一 XI

  中文版序二 XIII

  序 XV

  前言 XVII

重点推荐

  √ 在项目中灵活运用面向文档的存储方式。

  √ 了解MongoDB的无模式 数据模型 如何处理文档、集合和多个数据库之间的关系。

  √ 执行基本的写入操作,构建各种复杂的查询,任何条件下都能查出数据。

  √ 使用索引、聚合工具,以及其他高级查询技巧。

  √ 了解监控、安全和认证、备份和修复等内容。

  √ 建立主从集群和自动故障恢复复制。

  √ 利用分片水平扩展MongoDB,了解其对应用的影响。

  √  Java 、 PHP 、Python和 Ruby 的应用实例应有尽有。

  √ 推荐在64位机下运行,因为MongoDB在32位机下最大文件大小是2G

MongoDB实战开发 【零基础学习,附完整Asp.net示例】

阅读目录

开始 下载MongoDB,并启动它 在C#使用MongoDB 重构(简化)代码 使用MongoDB的客户端查看数据 使用MongoDB的客户端维护数据 MongoDB提供的C#驱动 MongoDB不支持在查询数据库时使用Join操作 获取MongoDB服务端状态

【目标】:本文将以实战的形式,向您展示如何用C#访问MongoDB,完成常见的数据库操作任务, 同时,也将介绍MongoDB的客户端(命令行工作模式)以及一些基础的命令。

【说明】:MongoDB是什么?有什么用?如果不清楚这些问题的,请自己google一下吧。

【适合对象】:完全没有接触MongoDB或对MongoDB有一点了解的C#开发人员。因此本文是一篇入门级的文章。

【示例项目】:本文的完整示例是一个简单的【客户,商品,订单】业务场景,  预览界面效果请点击此处(但并不完全相同),也包含下载示例项目的源码。

让我们开始MongoDB的实战入门吧。

回到顶部

下载MongoDB,并启动它

您可以在这个地址下载到MongoDB:  http://www.mongodb.org/downloads , 本文将以【mongodb-win32-i386-1.8.2-rc2】来演示MongoDB的使用。

下载好了吗?我们继续吧。请解压缩您刚才下载的MongoDB的zip压缩包,进入解包的bin目录,会发现有一堆exe文件。 现在,请打开命令行窗口并切换到刚才的bin目录,然后输入以下命令:

这里,我运行了程序mongod.exe,并告诉它数据文件的保存目录(这个目录要事先创建好),至于mongod的更多命令行参数,请输入命令: mongod /? 来获得。
如果您也看到了这个界面,那么表示MongoDB的服务端已成功启动了。

顺便提一下:运行mongod后,它会显示一些有用的信息。比如:pid (进程ID), tcp port (监听端口), http 端口(用于查看运行状态), 操作系统版本,数据目录,32 or 64位版本,如果是32位版本,它还会告诉你【数据有2G的限制】,所以正式使用建议运行64位版本。

接下来,我们还要去下载MongoDB的C#驱动,它可以让我们在C#中使用MongoDB 。下载地址:  https://github.com/samus/mongodb-csharp
我下载到的压缩包是:samus-mongodb-csharp-0.90.0.1-93-g6397a0f.zip 。这个压缩包本身也包含了一个Sample,有兴趣的可以看看它。
我们在C#访问MongoDB所需的驱动就是项目MongoDB了。编译这个项目就能得到了,文件名:MongoDB.dll

回到顶部

在C#使用MongoDB

好了,有了前面的准备工作,我们可以开始在C#中使用MongoDB了。不过,由于本示例项目的代码也不少,因此本文将只展示与MongoDB交互的相关代码, 更完整的代码请自行查阅示例项目。

接下来,本文演示通过C#完成【客户资料】的一些基本的数据操作,还是先来定义一个客户资料的类型吧。

 public sealed class   Customer
 {
    [ MongoId ]
     public string  CustomerID {  get ;  set ; }
     public string  CustomerName {  get ;  set ; }
     public string  ContactName {  get ;  set ; }
     public string  Address {  get ;  set ; }
     public string  PostalCode {  get ;  set ; }
     public string  Tel {  get ;  set ; }
}

说明:这就是一个简单的类,而且代码中的[MongoId]也是可以不要的(这个后面再说)。

在操作数据库之前,我要说明一下:MongoDB在使用前,并不要求您事先创建好相应的数据库,设计数据表结构!
在MongoDB中,没有【表】的概念,取而代之的是【集合】,也没有【数据记录】的概念,取而代之的是【文档】, 我们可以把【文档】理解成一个【对象】,任意的对象,甚至可以有复杂的嵌套层次。
因此,我们不用再写代码从【数据表字段】到C#类的【属性,字段】的转换了,现在直接就可以读写整个对象了。
而且MongoDB不支持Join操作,所以,如果有【关联】操作,就需要你自己来处理。

再来定义二个变量:

 private static readonly string  _connectionString  =   "Server=127.0.0.1" ;

 private static readonly string  _dbName  =   "MyNorthwind" ;

新增记录
 public void  Insert( Customer  customer)
{
    customer . CustomerID  =   Guid  . NewGuid() . ToString( "N" );

     // 首先创建一个连接
      using (  Mongo  mongo  =   new   Mongo (_connectionString) ) {

         // 打开连接
         mongo . Connect();

         // 切换到指定的数据库
          var  db  =  mongo . GetDatabase(_dbName);

         // 根据类型获取相应的集合
          var  collection  =  db . GetCollection <  Customer  > ();

         // 向集合中插入对象
         collection . Insert(customer);
    }
}

上面的代码中,每一行都有注释,这里就不再解释了。

删除记录
 public void  Delete( string  customerId)
{
     using (  Mongo  mongo  =   new   Mongo (_connectionString) ) {
        mongo . Connect();
         var  db  =  mongo . GetDatabase(_dbName);
         var  collection  =  db . GetCollection <  Customer  > ();

         // 从集合中删除指定的对象
         collection . Remove(x  =>  x . CustomerID  ==  customerId);
    }
}

更新记录
 public void  Update( Customer  customer)
{
     using (  Mongo  mongo  =   new   Mongo (_connectionString) ) {
        mongo . Connect();
         var  db  =  mongo . GetDatabase(_dbName);
         var  collection  =  db . GetCollection <  Customer  > ();

         // 更新对象
         collection . Update(customer, (x  =>  x . CustomerID  ==  customer . CustomerID));
    }
}

获取记录列表
 public   List  <  Customer  >  GetList( string  searchWord,  PagingInfo  pagingInfo)
{
     using (  Mongo  mongo  =   new   Mongo (_connectionString) ) {
        mongo . Connect();
         var  db  =  mongo . GetDatabase(_dbName);
         var  collection  =  db . GetCollection <  Customer  > ();

         // 先创建一个查询
          var  query  =   from  customer  in  collection . Linq()
                     select  customer;

         // 增加查询过滤条件
          if (  string  . IsNullOrEmpty(searchWord)  ==   false  )
            query  =  query . Where(c  =>  c . CustomerName . Contains(searchWord)  ||  c . Address . Contains(searchWord));

         // 先按名称排序,再返回分页结果.
          return  query . OrderBy(x  =>  x . CustomerName) . GetPagingList <  Customer  > (pagingInfo);
    }
}

获取单个对象
 public   Customer  GetById( string  customerId)
{
     using (  Mongo  mongo  =   new   Mongo (_connectionString) ) {
        mongo . Connect();
         var  db  =  mongo . GetDatabase(_dbName);
         var  collection  =  db . GetCollection <  Customer  > ();

         // 查询单个对象
          return  collection . FindOne(x  =>  x . CustomerID  ==  customerId);
    }
}

回到顶部

重构(简化)代码

从上面代码可以看出,操作MongoDB大致都是这样一个操作过程。

 // 首先创建一个连接
  using (  Mongo  mongo  =   new   Mongo (_connectionString) ) {

     // 打开连接
     mongo . Connect();

     // 切换到指定的数据库
      var  db  =  mongo . GetDatabase(_dbName);

     // 根据类型获取相应的集合
      var  collection  =  db . GetCollection <  Customer  > ();

     // 【访问collection,做你想做的操作】
 }

针对这个问题,我提供一个包装类来简化MongoDB的使用。 点击此处展开

简化后的CRUD代码如下:

 public void  Insert( Customer  customer)
{
    customer . CustomerID  =   Guid  . NewGuid() . ToString( "N" );

     using (  MyMongoDb  mm  =   new   MyMongoDb () ) {
        mm . GetCollection <  Customer  > () . Insert(customer);
    }
}

 public void  Delete( string  customerId)
{
     using (  MyMongoDb  mm  =   new   MyMongoDb () ) {
        mm . GetCollection <  Customer  > () . Remove(x  =>  x . CustomerID  ==  customerId);
    }
}

 public void  Update( Customer  customer)
{
     using (  MyMongoDb  mm  =   new   MyMongoDb () ) {
        mm . GetCollection <  Customer  > () . Update(customer, (x  =>  x . CustomerID  ==  customer . CustomerID));
    }
}

 public   Customer  GetById( string  customerId)
{
     using (  MyMongoDb  mm  =   new   MyMongoDb () ) {
         return  mm . GetCollection <  Customer  > () . FindOne(x  =>  x . CustomerID  ==  customerId);
    }
}

看了上面这些代码,您应该会觉得MongoDB的使用也很容易,对吧。
接下来,我来通过界面录入一些数据,来看看我录入的结果吧。

到这里,你或许想知道:MongoDB有没有一个自己的客户端来查看数据呢?因为总不能只依赖自己写代码来查看数据吧?
是的,MongoDB也提供了一个客户端来查看并维护数据库。接下来,我们再来看看如何使用MongoDB的客户端吧。

回到顶部

使用MongoDB的客户端查看数据

MongoDB自带一个Javascript shell,它可以从命令行与MongoDB实例交互。这个shell非常有用,通过它可以管理操作、检查运行实例、查询数据等操作。 
让我们再回到命令行窗口模式下吧(没办法,MongoDB只提供这种界面),运行mongo.exe ,如下图

这就是MongoDB的客户端的命令行模式了。通常我们在操作数据库前,要切换【当前数据】,
MongoDB也是一样,我们可以运行如下命令来查看数据库列表,并切换数据库,然后再查看集合列表,请看下图(我运行了三条命令)

注意:MongoDB区分名字的大小写。

在MongoDB中,查看【当前数据库】,可以使用命令【db】,
查看集合Customer的记录总数:【db.Customer.count();】
查看 CustomerId = 1 的记录:【db.Customer.findOne({"_id" : "1"});】,注意:查询条件是一个文档,这就是MongoDB的特色。
下图显示了上面三条命令的执行结果:

嗯,怎么有乱码?CustomerId = 1 的记录应该是这样的才对呀?

看到这一幕,您应该不要怀疑是MongoDB的错了,这个错误是由于MongoDB的客户端使用的编码是UTF-8, 而Windows 命令行程序 cmd.exe 使用的gb2312(我目前使用中文语言) 造成的。
解决办法:
1. 执行MongoDB的【exit】命令退回到Windows命令行状态(或者重新打开命令行窗口),
2. 运行命令:【chcp 65001】,切换到UTF-8编码下工作。
3. 设置命令行窗口的属性,请参考下图:

再运行 mongo 进入mongo命令行,切换数据库,并执行命令:【db.Customer.findOne({"_id" : "1"});】

现在可以看到汉字能正常显示了,但最后却显示"Failed to write to logfile",对于这个问题,我们如果执行命令 【db.Customer.findOne({"_id" : "91"});】(id=91的记录就是我最后录入的,全是a的那条,前面截图上有), 可以发现没有任何异常发生,因此认为这个问题还是和cmd.exe有关的。 如果切换回 chcp 936 ,这时将看到乱码,但没有"Failed to write to logfile",所以我将忽略这个错误。

回到顶部

使用MongoDB的客户端维护数据

下面我来演示一下如何使用MongoDB的客户端来执行一些基本的数据维护功能。还是从CRUD操作开始吧,请看下图,为了方便,我将在一个截图中执行多个命令。
注意:MongoDB的文档使用的是一种称为BSON格式的对象,与Javascript中的JSON类似。

在上面的示例中,每个命令后,我加了一个红圈。在示例中,我先切换到 MyTest 数据库(它并不存在,但没关系), 然后我定义了一个文档 item 并插入到集合 table1 中,然后又定义了一个文档 item2,也插入到集合 table1 中。 注意:item , item2 的结构完全不同,但能放在一个集合中(不建议这样做)。最后调用 find() 显示集合中的所有文档。
此时,您有没有注意到:【每个文档有一个名为 "_id" 的成员】,我可没有定义啊。
其实,MongoDB会为每个文档都创建这样一个文档成员,我们指定的 "key", "id" 对于MongoDB来说: 它们并不是【文档的主键】,MongoDB只认 "_id",你可以指定,但如果不指定,MongoDB就自动添加。

此时,你可以看看前二张图片,可以发现:在定义Customer类时,有一个成员CustomerID此时却不存在! 我们可以再看一下Customer的定义:

 public sealed class   Customer
 {
    [ MongoId ]
     public string  CustomerID {  get ;  set ; }
     public string  CustomerName {  get ;  set ; }
     public string  ContactName {  get ;  set ; }
     public string  Address {  get ;  set ; }
     public string  PostalCode {  get ;  set ; }
     public string  Tel {  get ;  set ; }
}

此时,您应该发现CustomerID这个成员有一个[MongoId]的特性。正是由于这个特性,驱动程序将把CustomerID映射为"_id"来使用。

好了,再次回到命令行,我要演示其它的命令。请看下图:

为了要更新某个文档,我们要使用findOne()方法找到要修改的文档对象,并将它保存一个变量t中,然后,修改它的属性, 接着调用update()方法就可以更新文档了,注意在调用update()时,第一个参数【更新范围】是采用文档的形式给出的, 第二参数才是要更新的新对象。在删除时,删除条件也是采用文档的形式指定的。处处使用文档,这就是MongoDB的特色。

前面的示例代码中,我使用了find()和findOne(),它们是有区别的:findOne()只返回一个文档对象,find()返回一个集合列表, 如果不指定过滤范围,它将返回整个集合,但在客户端中最多只显示前20个文档。

再来个复杂的查询:搜索日期范围是 2011-06-25 到 2011-06-26 之间的订单记录。由于返回的结果太长,我的截图将不显示它们。
注意:MongoDB的查询条件中,并没有 >, <, >= , <= 这些运算符,而是使用 "$lt", "$lte", "$gt", "$gte" 这种方式作为文档的KEY来使用的, 因此一个简单的 OrderDate >= "2006-06-25" and OrderDate < "2006-06-26" 要写成如下方式:

如果遇到 or 就更麻烦了,如:CustomerId = 1 or CustomerId = 2 ,有二种写法:

语法不难,相信能看懂JSON的人,也能看懂这二条命令。

再来个分页的命令:

与LINQ的语法类似,好理解。

MongoDB客户端还支持其它的语法,这里就不一一介绍了。因为我们的目标是在C#中使用MongoDB,在MongoDB提供的C#驱动中, 我们并不需要写那样麻烦的查询条件,只需要按LINQ的语法写查询就可以了,因此会很容易使用。 不过,有些维护性的操作,我们只能通过命令的方式去执行,比如:删除集合,删除数据库。

执行【db.runCommand({"drop" : "table1"});】便可以删除一个集合,也可以执行命令【db.table1.drop();】,二者的效果是一样的。
再来看看如何删除数据库的命令:

注意:命令【db.runCommand({"dropDatabase": 1});】只能删除【当前数据库】,所以要先切换当前数据库, 然后执行这个命令,执行删除数据库的命令后,我们再用命令【show dbs;】,发现数据库【MyTest】已不存在,即删除成功。 删除数据库还有一个方法:还记得我前面启动mongod.exe时给它传递了一个参数 【-dbpath "H:\AllTempFiles\mongodb\data"】吗? 我们现在去那个目录看一下有什么东西。

看了这张图,您有没有想过:这二个以【MyNorthwind】开头的文件会不会就是数据库的文件呢? 我现在就删除看看,先停止mongod.exe,然后删除文件(由于我目前只有一个数据库,我把目录下的文件全删除了),删除后:

现在,我再来启动mongod.exe,然后在客户端执行命令【show dbs;】看看:

现在可以发现我们之前的【MyNorthwind】数据库没有了,当然也就是删除了。 说明一下:现在这二个数据库,是MongoDB自带的,用于特殊用途的,我们可以不理会它们。

好了,我们还是再来看看MongoDB提供的C#驱动提供了什么东西吧。

回到顶部

MongoDB提供的C#驱动

我把MongoDB提供的C#驱动中认为比较重要的类做了个截图:

再来看看我前面给出一段操作MongoDB的代码:

 // 首先创建一个连接
  using (  Mongo  mongo  =   new   Mongo (_connectionString) ) {

     // 打开连接
     mongo . Connect();

     // 切换到指定的数据库
      var  db  =  mongo . GetDatabase(_dbName);

     // 根据类型获取相应的集合
      var  collection  =  db . GetCollection <  Customer  > ();

     // 【访问collection,做你想做的操作】
 }

这段代码大致也说明了在C#中操作MongoDB的一个过程,主要涉及上图中的前三个类,这三个类也是最核心的类。 这里值得一提的是:LinqExtensions.Linq()方法可以让我们在写查询时, 方便地使用LINQ的优雅语法,而不是一堆复杂的文档条件!这也是我选择这个驱动的原因。

还记得我前面举过几个在命令行中调用runCommand的示例吗?如果在C#中也需要执行这样的操作,可以调用MongoDatabase.SendCommand() 方法。比如:删除集合Category,我们可以写成:

 void  DeleteCategoryCollection()
{
     using (  MyMongoDb  mm  =   new   MyMongoDb () ) {
        mm . CurrentDb . SendCommand( new   Document ( "drop" ,  "Category" ));
    }
}

【MongoIdAttribute】:可以让我们将一个C#类的数据成员映射到文档的"_id"属性。前面有示例说明,这里就不再多说了。

【MongoAliasAttribute】:可以让我们将一个C#类的数据成员在映射到文档时采用其它的属性名称。
比如:我希望将CustomerName成员在保存到MongoDB时,采用CName来保存。

[ MongoAlias ( "CName" )]
 public string  CustomerName {  get ;  set ; }

【MongoIgnoreAttribute】:可以让一个C#类在保存到MongoDB时,忽略某些成员。请看下面的代码:

 public sealed class   OrderItem  :  MyDataItem
 {
    [ MongoId ]         // 这个成员将映射到 "_id"
      public string  OrderID {  get ;  set ; }

    [ ScriptIgnore ]     // 在JSON序列化时,忽略这个成员
      public   DateTime  OrderDate {  get ;  set ; }

    [ MongoIgnore ]     // 在保存到MongoDB时,忽略这个成员
      public string  CustomerName {  get ;  set ; }

     // .... 还有其它的属性。

    // 加这个属性仅仅为了在客户端中能更容易的显示,要不然,客户端处理格式转换实在是麻烦。
    // 它将不会被写入到数据库。
     [ MongoIgnore ]
     public string  OrderDateText {  get  {  return this  . OrderDate . ToString( "yyyy-MM-dd HH:mm:ss" ); } }
}

回到顶部

MongoDB不支持在查询数据库时使用Join操作

在MongoDB中,一个文档就是一个完整的对象,所以获取一个对象时,并不需要关系数据库的那种JOIN语法。 在上面定义的OrderItem中,CustomerName并没有保存到数据库,而是在加载时,采用了【引用】的设计方式, 根据CustomerID去访问集合Customer来获取对应的CustomerName ,这也算是JOIN的常见使用场景了。

示例项目中有一个需求:根据一个日期范围查询订单列表(支持分页)。我是这样实现这个查询操作的。

 /// <summary>
///   根据指定的查询日期范围及分页参数,获取订单记录列表
  /// </summary>
/// <param name="dateRange">  日期范围  </param>
/// <param name="pagingInfo">  分页参数  </param>
/// <returns>  订单记录列表  </returns>
  public   List  <  OrderItem  >  Search( QueryDateRange  dateRange,  PagingInfo  pagingInfo)
{
    dateRange . EndDate  =  dateRange . EndDate . AddDays( 1 );

     using (  MyMongoDb  mm  =   new   MyMongoDb () ) {
         var  collection  =  mm . GetCollection <  OrderItem  > (STR_Orders);

         var  query  =   from  ord  in  collection . Linq()
                     where  ord . OrderDate  >=  dateRange . StartDate  &&  ord . OrderDate  <  dateRange . EndDate
                     orderby  ord . OrderDate  descending
                    select new   OrderItem  {
                        OrderID  =  ord . OrderID,
                        CustomerID  =  ord . CustomerID,
                        OrderDate  =  ord . OrderDate,
                        SumMoney  =  ord . SumMoney,
                        Finished  =  ord . Finished
                    };

         // 获取订单列表,此时将返回符合分页的结果。
          List  <  OrderItem  >  list  =  query . GetPagingList <  OrderItem  > (pagingInfo);


         // 获取订单列表中所有的客户ID
          string [] cids  =  ( from  ord  in  list 
                          where string  . IsNullOrEmpty(ord . CustomerID)  ==   false
                         select  ord . CustomerID)
                          . Distinct()
                          . ToArray();

         // 找到所有客户记录
          Dictionary  <  string ,  Customer  >  customers  =
                             ( from  c  in  mm . GetCollection <  Customer  > () . Linq()
                              where  cids . Contains(c . CustomerID)
                              select new   Customer  {
                                 CustomerID  =  c . CustomerID,
                                 CustomerName  =  c . CustomerName
                             })
                             . ToDictionary(x  =>  x . CustomerID);

         // 为订单列表结果设置CustomerName
          foreach (  OrderItem  ord  in  list ) {
             Customer  c  =   null ;
             if (  string  . IsNullOrEmpty(ord . CustomerID)  ==   false   &&  customers . TryGetValue(ord . CustomerID,  out  c) )
                ord . CustomerName  =  c . CustomerName;
             else 
                 ord . CustomerName  =   string  . Empty;
        }

         return  list;
    }
}

回到顶部

获取MongoDB服务端状态

我们再来看一下当时启动服务端的截屏吧:

注意最后一行,它告诉我们它有一个WEB接口,端口是 28017 ,现在我就去看看那是个什么样子的。

可以看到它提供了一些服务端的状态信息。 我们还可以通过访问【http://localhost:28017/_status】来获得以JSON方式的统计信息。

我们还可以通过运行客户端的命令【db.runCommand({"serverStatus" : 1});】来获取这些信息:

好了,就说到这里吧。接下来,您也可以写点代码尝试一下,或者下载我准备的示例项目参考一下。  点击此处进入下载页面。

祝您使用MongoDB顺利。

二天时间写此文,希望能给您一点收获。如果认为此文对您有帮助,别忘了支持一下哦。

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于一个基于分布式文件存储的数据库MongoDB的详细内容...

  阅读:47次

上一篇: c#计划任务

下一篇:初识HTMLPARSER.NET

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网
[ SiteMap ]