利用MongoDB for C# Driver编写访问MongoDB
数据库的帮助类。
?
?
///
/// 获取数据库实例对象
///
/// 数据库连接串
/// 数据库名称
/// 数据库实例对象
private static MongoDatabase GetDatabase(string connectionString, string dbName)
{
var server = MongoServer.Create(connectionString);
return server.GetDatabase(dbName);
}
?
?
2、新增数据
?
///
/// 插入一条记录
///
/// 数据类型
/// 数据库连接串
/// 数据名称
/// 集合名称
/// 数据对象
public static void Insert(string connectionString, string dbName, string collectionName, T model) where T : EntityBase
{
if (model == null)
{
throw new ArgumentNullException("model", "待插入数据不能为空");
}
var db = GetDatabase(connectionString, dbName);
var collection = db.GetCollection(collectionName);
collection.Insert(model);
}
?
3、更新数据
?
///
/// 更新数据
///
/// 数据库连接串
/// 数据库名称
/// 集合名称
/// 查询条件
/// 更新字段
public static void Update(string connectionString, string dbName, string collectionName, IMongoQuery query,
Dictionary dictUpdate)
{
var db = GetDatabase(connectionString, dbName);
var collection = db.GetCollection(collectionName);
var update = new UpdateBuilder();
if (dictUpdate != null && dictUpdate.Count > 0)
{
foreach (var item in dictUpdate)
{
update.Set(item.Key, item.Value);
}
}
collection.Update(query, update, UpdateFlags.Multi);
}
///
/// 更新数据
///
/// 数据库连接串
/// 数据库名称
/// 集合名称
/// 查询条件
/// 更新条件
public static void Update(string connectionString, string dbName, string collectionName, IMongoQuery query,
IMongoUpdate update)
{
var db = GetDatabase(connectionString, dbName);
var collection = db.GetCollection(collectionName);
collection.Update(query, update, UpdateFlags.Multi);
}
?
4、查询数据
?
///
/// 根据ID获取数据对象
///
/// 数据类型
/// 数据库连接串
/// 数据库名称
/// 集合名称
/// ID
/// 数据对象
public static T GetById(string connectionString, string dbName, string collectionName, string id)
where T : EntityBase
{
var db = GetDatabase(connectionString, dbName);
var collection = db.GetCollection(collectionName);
var tId = new ObjectId(id);
return collection.FindOneById(tId);
}
///
/// 根据查询条件获取一条数据
///
/// 数据类型
/// 数据库连接串
/// 数据库名称
/// 集合名称
/// 查询条件
/// 数据对象
public static T GetOneByCondition(string connectionString, string dbName,
string collectionName, IMongoQuery query)
where T : EntityBase
{
var db = GetDatabase(connectionString, dbName);
var collection = db.GetCollection(collectionName);
return collection.FindOne(query);
}
///
/// 根据查询条件获取多条数据
///
/// 数据类型
/// 数据库连接串
/// 数据库名称
/// 集合名称
/// 查询条件
/// 数据对象集合
public static List GetManyByCondition(string connectionString, string dbName,
string collectionName, IMongoQuery query)
where T : EntityBase
{
var db = GetDatabase(connectionString, dbName);
var collection = db.GetCollection(collectionName);
return collection.Find(query).ToList();
}
///
/// 根据查询条件获取多条数据(分页)
///
/// 数据类型
/// 数据库连接串
/// 数据库名称
/// 集合名称
/// 查询条件
/// 排序
/// 页号
/// 每页大小
/// 分页数据集合
public static PagingList GetManyByPageCondition(string connectionString, string dbName,
string collectionName, IMongoQuery query, IMongoSortBy sortBy, int pageIndex, int pageSize)
where T : EntityBase
{
var db = GetDatabase(connectionString, dbName);
var collection = db.GetCollection(col