MongoDB帮助类
public class MongoHelper
{
private static readonly string _connectionString = ConfigHelper.GetAppConfig("mongodb");
private static readonly string _dbName = ConfigHelper.GetAppConfig("mongodbname");
private IMongoDatabase mongodb;
public MongoHelper()
{
MongoClient mc = new MongoClient(_connectionString);
mongodb = mc.GetDatabase(_dbName);
}
//单个查询
public async Task<T> FindAsync<T>(string tablename, FilterDefinition<T> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
var result = await collections.Find(filter).FirstOrDefaultAsync();
return result;
}
public async Task<BsonDocument> FindAsync(string tablename, FilterDefinition<BsonDocument> filter)
{
var collections = mongodb.GetCollection<BsonDocument>(tablename);
var result = await collections.Find(filter).FirstOrDefaultAsync();
return result;
}
public T Find<T>(string tablename, FilterDefinition<T> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
var first = collections.Find(filter).FirstOrDefault();
return first;
}
public T Find<T>(string tablename, Expression<Func<T, bool>> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
var first = collections.Find(filter).FirstOrDefault();
return first;
}
public T FirstOrDefault<T>(string tablename, string orderbyname, bool isDescending, FilterDefinition<T> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
SortDefinition<T> sd = null;
if (isDescending)
{
sd = Builders<T>.Sort.Descending(orderbyname);
}
else
{
sd = Builders<T>.Sort.Ascending(orderbyname);
}
var first = collections.Find(filter).Sort(sd).FirstOrDefault();
return first;
}
//批量查询
public async Task<List<T>> FindListAsync<T>(string tablename, FilterDefinition<T> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
var result = await collections.Find(filter).ToListAsync();
return result;
}
public List<T> FindList<T>(string tablename, FilterDefinition<T> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
var bsonlist = collections.Find(filter).ToList();
return bsonlist;
}
public List<T> FindList<T>(string tablename, FilterDefinition<T> filter, string orderbyname, bool isDescending,int limit)
{
var collections = mongodb.GetCollection<T>(tablename);
SortDefinition<T> sd = null;
if (isDescending)
{
sd = Builders<T>.Sort.Descending(orderbyname);
}
else
{
sd = Builders<T>.Sort.Ascending(orderbyname);
}
var bsonlist = collections.Find(filter).Sort(sd).Limit(limit).ToList();
return bsonlist;
}
public List<T2> Aggregate<T, T2>(string tablename, FilterDefinition<T> filter, BsonDocument bd)
{
var collections = mongodb.GetCollection<T>(tablename);
var bsonlist = collections.Aggregate().Match(filter).Group<T2>(bd).ToList();
return bsonlist;
}
public List<T> FindPageList<T>(string tablename, FilterDefinition<T> filter, string orderbyname,bool isDescending, int pageIndex, int pageSize)
{
var collections = mongodb.GetCollection<T>(tablename);
int skip = (pageIndex - 1) * pageSize;
SortDefinition<T> sd = null;
if (isDescending)
{
sd = Builders<T>.Sort.Descending(orderbyname);
}
else
{
sd = Builders<T>.Sort.Ascending(orderbyname);
}
var list = collections.Find(filter).Sort(sd).Skip(skip).Limit(pageSize).ToList();
return list;
}
public List<T> FindList<T>(string tablename, Expression<Func<T, bool>> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
var bsonlist = collections.Find(filter).ToList();
return bsonlist;
}
//插入
public async Task InsertAsync<T>(string tablename, T t)
{
var collections = mongodb.GetCollection<T>(tablename);
await collections.InsertOneAsync(t);
}
public void Insert<T>(string tablename, T t)
{
var collections = mongodb.GetCollection<T>(tablename);
collections.InsertOne(t);
}
public async Task InsertManyAsync<T>(string tablename, List<T> t)
{
var collections = mongodb.GetCollection<T>(tablename);
await collections.InsertManyAsync(t);
}
public void InsertMany<T>(string tablename, List<T> t)
{
var collections = mongodb.GetCollection<T>(tablename);
collections.InsertMany(t);
}
public async Task InsertManyAsync(string tablename, List<BsonDocument> t)
{
var collections = mongodb.GetCollection<BsonDocument>(tablename);
await collections.InsertManyAsync(t);
}
public void InsertMany(string tablename, List<BsonDocument> t)
{
var collections = mongodb.GetCollection<BsonDocument>(tablename);
collections.InsertMany(t);
}
//批量删除
public long DeleteMany<T>(string tablename, FilterDefinition<T> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
var result = collections.DeleteMany(filter);
return result.DeletedCount;
}
public async Task<long> DeleteManyAsync<T>(string tablename, FilterDefinition<T> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
var result = await collections.DeleteManyAsync(filter);
return result.DeletedCount;
}
//单个删除
public bool Delete<T>(string tablename, FilterDefinition<T> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
var result = collections.DeleteOne(filter);
return result.DeletedCount == 1;
}
public bool Delete<T>(string tablename, Expression<Func<T, bool>> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
var result = collections.DeleteOne(filter);
return result.DeletedCount >= 1;
}
public async Task<bool> DeleteAsync<T>(string tablename, FilterDefinition<T> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
var result = await collections.DeleteOneAsync(filter);
return result.DeletedCount >= 1;
}
public async Task<bool> DeleteAsync<T>(string tablename, Expression<Func<T, bool>> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
var result = await collections.DeleteOneAsync(filter);
return result.DeletedCount >= 1;
}
//获取数量
public long Count<T>(string tablename, FilterDefinition<T> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
return collections.Count(filter);
}
public long Count<T>(string tablename, Expression<Func<T, bool>> filter)
{
var collections = mongodb.GetCollection<T>(tablename);
return collections.Count(filter);
}
public long Count(string tablename, FilterDefinition<BsonDocument> filter)
{
var collections = mongodb.GetCollection<BsonDocument>(tablename);
return collections.Count(filter);
}
//去重查询
public void Distinct(string tablename, FieldDefinition<BsonDocument, BsonString> field, FilterDefinition<BsonDocument> filter)
{
var collections = mongodb.GetCollection<BsonDocument>(tablename);
collections.Distinct(field, filter);
}
//更新数据
public bool UpdateOne<T>(string tablename, FilterDefinition<T> filter, UpdateDefinition<T> update)
{
var collections = mongodb.GetCollection<T>(tablename);
var result = collections.UpdateOne(filter, update);
return result.MatchedCount>=1;
}
//批量更新
public bool UpdateMany<T>(string tablename, FilterDefinition<T> filter, UpdateDefinition<T> update)
{
var collections = mongodb.GetCollection<T>(tablename);
var result = collections.UpdateMany(filter, update);
return result.MatchedCount >= 1;
}
}
赞 (0)
