• C#访问MongoDB数据


    开始:

    先下载个C#的驱动。MongoDB提供各种主流与非主流预言的开发驱动。

    C# Driver 下载地址:猛击这里

    CSharp Driver Tutorial:猛击这里

    下载文件安装或者解压缩包

    如果您是安装,请到安装位置寻找,如果是ZIP压缩包,解压缩包得到如下两个文件:

    1. MongoDB.Bson.dll              :序列化、Json相关
    2. MongoDB.Driver.dll             :我们的驱动

    没了,只有这两个文件是我们的最爱。

    继续:

    新建一个C#的项目,不管你是vs2008,还是vs2010,也许您手中有vs2012?也发给我一份吧。感谢共享:)

    添加引用,将上面两个DLL引入到项目里面

    您启动Mongod.exe了吗?启动服务。

    代码里面添加命名空间:

    using MongoDB.Bson;
    using MongoDB.Driver;

    跟着[CSharp Driver Tutorial:猛击这里]继续做。如果您没有打开[CSharp Driver Tutorial]就不要开了,看完全文再看,以免分散精力。

    //  MongoDB连接串,以[mongodb: // ]开头。这里,我们连接的是本机的服务 
    string  connectionString  =   " mongodb://localhost " ;
    //  连接到一个MongoServer上 
    MongoServer server  =  MongoServer.Create(connectionString);
    1. MongoDb的连接串
      • 在连接串中,我们可以指定其他机器上的服务和连接端口格式如下:
      • mongodb://[username:password@]hostname[:port][/[database][?options]]
      • 简单示例:mongodb://server1,server2:27017,server2:27018
      • 更进一步详细的信息请查看[CSharp Driver Tutorial:猛击这里]
    2. MongoServer
      • 有几种不同的重载了的创建方式:
      • MongoServer Create()   如果只是连接本机,并且本机只启动了一个服务,直接调用这个方法,完全不需要连接串
      • MongoServer Create(MongoConnectionStringBuilder builder)
      • MongoServer Create(MongoUrl url)
      • MongoServer Create(string connectionString)
      • MongoServer Create(Uri uri)
      • 更进一步详细的信息请查看[CSharp Driver Tutorial:猛击这里]

    继续:

    再增加几行代码: 

    //  MongoDB连接串,以[mongodb: // ]开头。这里,我们连接的是本机的服务 
    string  connectionString  =   " mongodb://localhost " ;
    //  连接到一个MongoServer上 
    MongoServer server  =  MongoServer.Create(connectionString);            
    //  -------------------------------------------------------------------------
    //  打开数据库testdb 
    MongoDatabase db  =  server.GetDatabase( " testdb " );
    //  获取集合employees 
    MongoCollection collection  =  db.GetCollection( " employees " );
    1. server.GetDatabase("testdb")
      • 打开数据库:testdb
      • 我没有testdb库啊??不要担心,不要疑惑,不要在这个问题上浪费时间,如果没有这个库存在,MongoDB会自动替你创建它的
    2. db.GetCollection("employees")
      • 获取集合:employees
      • 好吧有了前一个教训,管他呢,爱存在不存在,MongoDB的开发人员都会替我们创建吧?

    继续: 

    //  MongoDB连接串,以[mongodb: // ]开头。这里,我们连接的是本机的服务 
    string  connectionString  =   " mongodb://localhost " ;
    //  连接到一个MongoServer上 
    MongoServer server  =  MongoServer.Create(connectionString);            
    //  -------------------------------------------------------------------------
    //  打开数据库testdb 
    MongoDatabase db  =  server.GetDatabase( " testdb " );
    //  获取集合employees 
    MongoCollection collection  =  db.GetCollection( " employees " );
    //  -------------------------------------------------------------------------            
    //  创建一个employee 
    BsonDocument employee  =   new  BsonDocument 
    {
      {  " name " ,  " Ernest Hemingway "  },
      {  " title " ,  " For Whom the Bell Tolls "  }
    };
    //  把它写到上面那个集合里面去 
    collection.Insert(employee);

     如果您的程序没有抛出任何异常,那么数据已经进去了。不知到BsonDocument是个啥东西?

    看个简单的例子吧:

    BsonDocument document = new BsonDocument {
            { "name", name },
            { "city", city }, // not added if city is null
            { "dob", dob, dobAvailable } // not added if dobAvailable is false
        };
    它以键值对的方式、JSON的格式,保存数据。MongoDB通过BsonDocument套BsonDocument的方式,使您可以存储复杂格式的数据。

    • 有一些重要的概念,看完文章以后,你一定要去过一遍:BsonType、BsonValue、BsonElement、BsonDocument、MongoServer、MongoDatabase、MongoCollection
    • 在这里: [CSharp Driver Tutorial:猛击这里]

     继续:

    最后几行小代码:

    //  -------------------------------------------------------------------------
    //  查询上面那个刚刚插进去的数据,就这格式了,看看QueryDocument的文档吧 
    var query  =   new  QueryDocument( " name " ,  " Ernest Hemingway " );            
    //  遍历结果 
    foreach  (BsonDocument emp  in  collection.Find(query))
    {
         //  BsonValue有两种取值方式,下面两个都用了一个是AsXXX,一个是ToXXX 
        Console.WriteLine( " name:{0} title:{1} " , emp[ " name " ].AsString, emp[ " title " ].ToString());
    }
    1. QueryDocument
      • MongoCollection books; 
             var query = Query.And( 
                Query.EQ( "author",  "Kurt Vonnegut"), 
                Query.EQ( "title",  "Cats Craddle") 
            ); 
      • 不解释了,查询的各种细节用法看各种文档吧(因为我还没看呢,解释不了,呵呵)。作为第一步,这里知道有这个东西,量和细节的积累在不断的实践中获得。[CSharp Driver Tutorial:猛击这里]
    2. BsonValue 的取值
      • emp["name"].AsString 这是第一种取值方式。相关的有AsInt32,AsBoolean等等
      • emp["title"].ToString() 这是第二种取值方式。相关的有ToInt32,ToBoolean等等
      • 请注意细节:
      • AsXXX取值方式,如果类型不一致,可以抛出异常InvalidCastException
      • ToXXX取值方式,不会抛出异常,会返回默认值。[CSharp Driver Tutorial:猛击这里]

    至此,已经完成第一次C#程序访问MongoDB的全过程。

    PS:重要概念:

    BsonType、BsonValue、BsonElement、BsonDocument、MongoServer、MongoDatabase、MongoCollection

    一定要看。[CSharp Driver Tutorial:猛击这里]

  • 相关阅读:
    函数作业1
    函数、装饰器、迭代器、内置方法总练习题
    疑问
    装饰器
    文件练习题1,2
    内置函数练习题和总结
    GET和POST请求的区别
    HTTP请求方法
    HTTP之状态码
    HTTP之响应消息Response
  • 原文地址:https://www.cnblogs.com/51busy/p/4205714.html
Copyright © 2020-2023  润新知