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(); } } }