C# MongoDB操作类

之前使用C#对MongoDB进行操作,查找了一些资料,最后总结了这个类,记录一下以备以后使用。


需要引用MongoDB.Driver.dll、MongoDB.Bson.dll、MongoDB.dll三个文件。如果没有的话,可以在https://pan.baidu.com/s/1qXQz7JI 下载。


以下为类的代码:

using MongoDB.Driver;
using MongoDB.Bson;
using MongoDB.Driver.Builders;  


public static class MongoHelperNew
{
	//服务器地址
	public static readonly string connectionString = "mongodb://用户名:密码@数据库IP:27017";
	//数据库名称 
	public static readonly string databaseName = "数据库名称";


	public static MongoCursor<BsonDocument> Search(String collectionName, IMongoQuery query)
	{
		//定义Mongo服务  
		MongoServer server = MongoServer.Create(connectionString);
		//获取databaseName对应的数据库,不存在则自动创建  
		MongoDatabase mongoDatabase = server.GetDatabase(databaseName);
		MongoCollection<BsonDocument> collection = mongoDatabase.GetCollection<BsonDocument>(collectionName);
		try
		{
			if (query == null)
				return collection.FindAll();
			else
				return collection.Find(query);
		}
		finally
		{
			server.Disconnect();
		}
	}
	/// <summary>  
	/// 新增  
	/// </summary>   
	public static Boolean Insert(String collectionName, BsonDocument document)
	{
		MongoServer server = MongoServer.Create(connectionString);
		MongoDatabase mongoDatabase = server.GetDatabase(databaseName);
		MongoCollection<BsonDocument> collection = mongoDatabase.GetCollection<BsonDocument>(collectionName);
		try
		{
			collection.Insert(document);
			server.Disconnect();
			return true;
		}
		catch
		{
			server.Disconnect();
			return false;
		}
	}
	/// <summary>  
	/// 修改  
	/// </summary>    
	public static Boolean Update(String collectionName, IMongoQuery query, IMongoUpdate new_doc)
	{
		MongoServer server = MongoServer.Create(connectionString);
		MongoDatabase mongoDatabase = server.GetDatabase(databaseName);
		MongoCollection<BsonDocument> collection = mongoDatabase.GetCollection<BsonDocument>(collectionName);
		try
		{
			collection.Update(query, new_doc);
			server.Disconnect();
			return true;
		}
		catch
		{
			server.Disconnect();
			return false;
		}
	}
	/// <summary>  
	/// 移除  
	/// </summary>  
	public static Boolean Remove(String collectionName, IMongoQuery query)
	{
		MongoServer server = MongoServer.Create(connectionString);
		MongoDatabase mongoDatabase = server.GetDatabase(databaseName);
		MongoCollection<BsonDocument> collection = mongoDatabase.GetCollection<BsonDocument>(collectionName);
		try
		{
			collection.Remove(query);
			server.Disconnect();
			return true;
		}
		catch
		{
			server.Disconnect();
			return false;
		}
	}
}

调用的方法如下:

// 查询操作
List<表model类> lst = new List<表model类>();

foreach (BsonDocument tmp in MongoHelperNew.Search("表名称", MongoDB.Driver.Builders.Query.EQ("字段名", 值)))
{
	表model类 表对象 =  new 表model类();
	表对象.属性1 = tmp.Contains("字段1") && tmp["字段1"] != null ? tmp["字段1"].AsString : "";
	if (tmp.Contains("字段2") && tmp["字段2"] != null)
	{
		表对象.属性2 = tmp["字段2"].AsInt64;
	}
	...
	表对象.属性N = tmp.Contains("字段N") && tmp["字段N"] != null ? tmp["字段N"].AsString : "";

	lst.Add(表对象);
}


// 新增操作
BsonDocument dom = new BsonDocument();
dom.Add(new BsonElement("字段1", 字段1值));
dom.Add(new BsonElement("字段2", 字段2值));
...
dom.Add(new BsonElement("字段N", 字段N值));
MongoHelperNew.Insert("Jobinfo", dom);

// 更新操作

// 设置更新的条件(相当于sql语句中的 where 主键/某个字段=值)
// 也可以使用 IMongoQuery query = MongoDB.Driver.Builders.Query.EQ("主键/某个字段", 值)
// MongoDB.Driver.Builders.Query好多方法可以使用,可以仔细参考一下
IMongoQuery query = new QueryDocument("主键/某个字段", 值);

// 设置要更新的字段(相当于sql语句中的 set 字段1=字段1值, 字段2=字段2值)
var updateValues = new List<MongoDB.Driver.Builders.UpdateBuilder>();

updateValues.Add(MongoDB.Driver.Builders.Update.
	Set("字段1", 字段1值).
	Set("字段2", 字段2值).
	...
	Set("字段N", 字段N值)
	);

IMongoUpdate up = new UpdateDocument();
up = MongoDB.Driver.Builders.Update.Combine(updateValues);

MongoHelperNew.Update("表名", query, up);


// 删除操作
IMongoQuery query = new QueryDocument("主键/某个字段", 值);

MongoHelperNew.Remove("表名", query);


目前只使用到增删查改,至于其他的应用,以后用到的时候再整理。



知行办公,专业移动办公平台 https://zx.naton.cn/
【总监】十二春秋之,3483099@qq.com
Masterzelo616701261@qq.com
【运营】运维艄公,897221533@qq.com
【产品设计】流浪猫,364994559@qq.com
【体验设计】兜兜,2435632247@qq.com
iOS】淘码小工,492395860@qq.comiMcG33Kimcg33k@gmail.com
Android】人猿居士,1059604515@qq.com;思路的顿悟,1217022114@qq.com
java】首席工程师MR_Wfeixue300@qq.com
【测试】土镜问道,847071279@qq.com
【数据】fox009521,42151960@qq.com;
【安全】保密,你懂的。









  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值