using Business.Core.Attributes;
using Microsoft.Extensions.Options;
using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
namespace Business.Core.MongoDBHelper
{
///
/// MongoDB帮助类
///
public class MongoDBTools : IMongoDB where T : Entity
{
public readonly IMongoCollection mongoCollection;
public IOptionsSnapshot _config;
///
/// MongoDB链接
///
///
///
public MongoDBTools(IOptionsSnapshot config)
{
_config = config;
//数据库链接
MongoClient client = new MongoClient(config.Value.connectstring);
CollectionNameAttribute collectonName = typeof(T).GetCustomAttributes(typeof(CollectionNameAttribute), true).FirstOrDefault() as CollectionNameAttribute;
if (collectonName == null)
{
throw new NotImplementedException("请配置Attribute属性!");
}
//数据库
var database = client.GetDatabase(collectonName.DatabaseName);
//表名
mongoCollection = database.GetCollection(collectonName.CollectionName);
}
///
/// 插入一条数据
///
///
///
public void InsertOne(T document)
{
mongoCollection.InsertOne(document);
}
///
/// 插入多条数据
///
///
///
///
public void InsertMany(List documents)
{
mongoCollection.InsertMany(documents,new InsertManyOptions() { IsOrdered = false});
}
///
/// 更新一条数据
///
///
///
///
public ReplaceOneResult UpdateOne(T documents,long id)
{
return mongoCollection.ReplaceOne(Builders.Filter.Eq(p=>p.Id, id), documents);
}
///
/// 获取所有数据
///
///
///
public List GetAll()
{
return mongoCollection.AsQueryable().ToList();
}
///
/// 跟据Id获取数据
///
///
///
///
public T GetOneByID(long id)
{
return mongoCollection.Find(p => p.Id == id).FirstOrDefault();
}
}
}