C#访问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;
跟着[CSharp Driver Tutorial:猛击这里]继续做。如果您没有打开[CSharp Driver Tutorial]就不要开了,看完全文再看,以免分散精力。
string connectionString = " mongodb://localhost " ;
// 连接到一个MongoServer上
MongoServer server = MongoServer.Create(connectionString);
- MongoDb的连接串
- 在连接串中,我们可以指定其他机器上的服务和连接端口格式如下:
- mongodb://[username:password@]hostname[:port][/[database][?options]]
- 简单示例:mongodb://server1,server2:27017,server2:27018
- 更进一步详细的信息请查看[CSharp Driver Tutorial:猛击这里]
- MongoServer
- 有几种不同的重载了的创建方式:
- MongoServer Create() 如果只是连接本机,并且本机只启动了一个服务,直接调用这个方法,完全不需要连接串
- MongoServer Create(MongoConnectionStringBuilder builder)
- MongoServer Create(MongoUrl url)
- MongoServer Create(string connectionString)
- MongoServer Create(Uri uri)
- 更进一步详细的信息请查看[CSharp Driver Tutorial:猛击这里]
继续:
再增加几行代码:
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的开发人员都会替我们创建吧?
继续:
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());
}
- QueryDocument
- MongoCollection books;
var query = Query.And(
Query.EQ( "author", "Kurt Vonnegut"),
Query.EQ( "title", "Cats Craddle")
); - 不解释了,查询的各种细节用法看各种文档吧(因为我还没看呢,解释不了,呵呵)。作为第一步,这里知道有这个东西,量和细节的积累在不断的实践中获得。[CSharp Driver Tutorial:猛击这里]
- MongoCollection books;
- 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:猛击这里]