发表于 2015-7-9 08:19:15

MongoDB数据访问[C#](转)

  http://www.mongodb.org/display/DOCS/Quickstart

作者:ZhangHQ来源:博客园发布时间:2010-12-25 21:16阅读:1346 次原文链接   [收藏]  我们要开始最简单的MongoDB连接,访问数据之旅了。在这之前,您已经安装MongoDB了吧!也许、大概、应该是装了。真的还没装好?那么:猛击这里
  开始:
  先下载个C#的驱动。MongoDB提供各种主流与非主流预言的开发驱动。
  C# Driver 下载地址:猛击这里
  CSharp Driver Tutorial:猛击这里
  下载文件安装或者解压缩包
  如果您是安装,请到安装位置寻找,如果是ZIP压缩包,解压缩包得到如下两个文件:

[*]MongoDB.Bson.dll            :序列化、Json相关
[*]MongoDB.Driver.dll             :我们的驱动
  没了,只有这两个文件是我们的最爱。
  
  继续:
  新建一个C#的项目,不管你是vs2008,还是vs2010,也许您手中有vs2012?也发给我一份吧。感谢共享:)
  添加引用,将上面两个DLL引入到项目里面

  
  您启动Mongod.exe了吗?不记得它是什么了?猛击这里。启动服务。
  
  代码里面添加命名空间:
  using MongoDB.Bson;
using MongoDB.Driver;
  跟着继续做。如果您没有打开就不要开了,看完全文再看,以免分散精力。


// MongoDB连接串,以开头。这里,我们连接的是本机的服务
string connectionString = "mongodb://localhost";
// 连接到一个MongoServer上
MongoServer server = MongoServer.Create(connectionString);
[*]MongoDb的连接串

[*]在连接串中,我们可以指定其他机器上的服务和连接端口格式如下:
[*]mongodb://hostname[:port][/[?options]]
[*]简单示例:mongodb://server1,server2:27017,server2:27018
[*]更进一步详细的信息请查看

[*]MongoServer

[*]有几种不同的重载了的创建方式:
[*]MongoServer Create()   如果只是连接本机,并且本机只启动了一个服务,直接调用这个方法,完全不需要连接串
[*]MongoServer Create(MongoConnectionStringBuilder builder)
[*]MongoServer Create(MongoUrl url)
[*]MongoServer Create(string connectionString)
[*]MongoServer Create(Uri uri)
[*]更进一步详细的信息请查看

  继续:
  再增加几行代码:


// MongoDB连接串,以开头。这里,我们连接的是本机的服务
string connectionString = "mongodb://localhost";
// 连接到一个MongoServer上
MongoServer server = MongoServer.Create(connectionString);            
// -------------------------------------------------------------------------
// 打开数据库testdb
MongoDatabase db = server.GetDatabase("testdb");
// 获取集合employees
MongoCollection collection = db.GetCollection("employees");
[*]server.GetDatabase("testdb")

[*]打开数据库:testdb
[*]我没有testdb库啊??不要担心,不要疑惑,不要在这个问题上浪费时间,如果没有这个库存在,MongoDB会自动替你创建它的

[*]db.GetCollection("employees")

[*]获取集合:employees
[*]好吧有了前一个教训,管他呢,爱存在不存在,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
[*]在这里:
  继续:
  最后几行小代码:


// -------------------------------------------------------------------------
// 查询上面那个刚刚插进去的数据,就这格式了,看看QueryDocument的文档吧
var query = new QueryDocument("name", "Ernest Hemingway");            
// 遍历结果
foreach (BsonDocument emp in collection.Find(query))
{
    // BsonValue有两种取值方式,下面两个都用了一个是AsXXX,一个是ToXXX
    Console.WriteLine("name:{0}\ttitle:{1}", emp["name"].AsString, emp["title"].ToString());
}
[*]QueryDocument

[*]MongoCollection books;
    var query = Query.And(
      Query.EQ("author", "Kurt Vonnegut"),
      Query.EQ("title", "Cats Craddle")
    );
[*]不解释了,查询的各种细节用法看各种文档吧(因为我还没看呢,解释不了,呵呵)。作为第一步,这里知道有这个东西,量和细节的积累在不断的实践中获得。

[*]BsonValue 的取值

[*]emp["name"].AsString 这是第一种取值方式。相关的有AsInt32,AsBoolean等等
[*]emp["title"].ToString() 这是第二种取值方式。相关的有ToInt32,ToBoolean等等
[*]请注意细节:
[*]AsXXX取值方式,如果类型不一致,可以抛出异常InvalidCastException
[*]ToXXX取值方式,不会抛出异常,会返回默认值。

  至此,您已经完成第一次C#程序访问MongoDB的全过程。开发中的其他方法及细节是个不断的积累过程。成功的迈出第一步之后,祝您越走越远。
  PS:罗嗦贴已经完成了。
  再次重申,重要概念:
  BsonType、BsonValue、BsonElement、BsonDocument、MongoServer、MongoDatabase、MongoCollection
  一定要看。
页: [1]
查看完整版本: MongoDB数据访问[C#](转)