使用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.
连接数据库
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")
);
更多更复杂的玩法:见
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
2. RockMongo: PHP+NGinx 免费,目前我用过几个中,最为靠谱一个了.
- 推荐的两个管理工具
2. RockMongo: PHP+NGinx 免费,目前我用过几个中,最为靠谱一个了.
连接数据库
//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";
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有更多的示例.里面提到了一些使用文档型数据库对象设计的准则
- 你的对象的模型即是你的数据模型
- 不要怕你的对象数据冗余
- 但也不要把所有的数据塞一个文档里
- 不要怕在文档里保存聚合统计信息