使用CSharp Driver操作Mongodb介绍

  • 简介

使用了一点Mongodb ,以下是自己的一点心得体会:

不提及他的分步式,效率等特性.至少以下一些特点.让我感觉没有必要再在普通应用场景再使用关系型数据库如:SQLServer那样的数据库了.

1.     省去了ORM:如NHibernate是一个优秀的ORM,性能也很好.但你得学习NHibernate的表达式语法.像NH那种文档健全的尚可接受.

        我还有一些更可怕的经历,写过很多用存储过程查询后手动映射成对象的代码.完全肉搏哦.
2.     绿色的:Mongodb,如果你不想注册成服务,只要启动那个exe就行了.数据库和数据库Data文件完全拷贝就可以迁移了.
3.     GridFS.把文件直接存在数据库里
4.     各种编程语言驱动支持.
官方支持的:
C
C# and .NET
C++
Erlang
Haskell
Java
Javascript
Perl 

开源社区支持的更多:
不列举了,很多语言没听说过.连小众的火星语言也都支持了呀.

Mongodb 官方网站: http://www.mongodb.org/downloads
C# 的Mongodb的Driver 版本也很多.本文只介绍mongodb官方网站上Csharp Driver.
这个Driver 是目前C#中,使用人数最多的,支持最完善的一个,支持MapReduce,但目前最新版本尚不支持Linq 方式查询.需要构建Query 表达式来查询,不那么直观,这个有点OUT.
具体见:http://www.mongodb.org/display/DOCS/CSharp+Language+Center


  • 推荐的两个管理工具
1.     MongoVUE : 界面较为直观,易用.但只有商业版,可以试用
2.     RockMongo: PHP+NGinx 免费,目前我用过几个中,最为靠谱一个了.
3.在没有安装其他管理工具的时候,Mongodb自带了一个Shell.mongo.exe 

  • CRUD 操作示例: (示例代码摘的.比我自己写的好)

连接数据库
 //MongoServer manages access to MongoDatabase
MongoServer mongoServer =      MongoServer.Create("mongodb://localhost:27017");
   
//MongoDatabase used to access MongoCollection instances
_mongoDatabase = mongoServer.GetDatabase("CodeCamp");
string COLLECTION="Artists";

var artist = new Artist() { Name = "The Decembrists" };

//直接插一个对象哦,
_mongoDatabase.GetCollection<Artist>(COLLECTION)
     .Insert(artist);


//更新
artist.Name = "The Decemberists";
_mongoDatabase.GetCollection<Artist>(COLLECTION)
     .Save(artist);
//更新一批
_mongoDatabase.GetCollection<Artist>(COLLECTION).Update(
    Query.EQ("Name", "The Decemberists"),
    Update.PushAll("Albums", "Castaways and Cutouts", "Picaresque", "Hazards of Love", "The Crane Wife")
);


更多更复杂的玩法:见
一个详细介绍的PPT:
  • 其他:
附件的PPT有更多的示例.里面提到了一些使用文档型数据库对象设计的准则
  •      你的对象的模型即是你的数据模型
  •      不要怕你的对象数据冗余
  •      但也不要把所有的数据塞一个文档里
  •      不要怕在文档里保存聚合统计信息

posted on 2011-09-27 17:13  Haozes  阅读(3801)  评论(0编辑  收藏  举报