C#访问MongoDB数据

来源:互联网 发布:外星文明 知乎 编辑:程序博客网 时间:2024/05/22 10:48

开始:

先下载个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}\ttitle:{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:猛击这里]

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中通快递已签收但是东西丢了怎么办 手机不版本低不支持微信下载怎么办 淘宝虚拟商品不支持7天退货怎么办 卖虚拟物品遇到恶意退款买家怎么办 淘宝极速退款后卖家拒绝退款怎么办 我的天猫积分不让换券了怎么办 微信手机话费充错了怎么办 自己进货在淘宝卖被投诉假货怎么办 京东买的电器售后后服务差怎么办 京东到家申请退款卖家不处理怎么办 天猫买了假货商品下架了怎么办 淘宝本地生活服务不能入驻了怎么办 淘宝店铺名在电脑上搜索不到怎么办 已经将退货寄回店家硬说没有怎么办 微信申诉账号短信验证失败怎么办 京东账号换手机号收不到短信怎么办 我的手机收不到短信通知怎么办? 淘宝卖家发货物流单号写错了怎么办 商铺买东西不给调换大小怎么办 圆通快递物流信息一直没更新怎么办 中通快递三天没更新物流信息怎么办 快递已经到了物流信息不更新怎么办 天天快递查询不更新物流信息怎么办 买车下个月分期全部付清怎么办手续 天猫客服介入以后商家不退款怎么办 淘宝上买代购奢侈品买到假货怎么办 淘宝退货卖家收到货拒绝退款怎么办 没收到货但申请了退货退款怎么办 小米商城预约中德手机没货怎么办 电脑用百度网盘下载速度超慢怎么办 ios网盘下载速度太慢怎么办 小米手机4x卡机了怎么办 小米手机4x屏幕点不动了怎么办 苹果手机连接u盘没反应怎么办 苹果官网储蓄卡分期额度不够怎么办 京东买东西发票信息填写错了怎么办 华为v9手机激活密码忘了怎么办 公司报销发票纸质的丢了怎么办 在京东上买的小天才手表坏了怎么办 美亚买东西过几天降价了怎么办 天猫买东西退款后又不想退了怎么办