目标框架:.NET Core 3.1
引用库:
封装MongoDB操作库
IMongoDBConfiguration
public interface IMongoDBConfiguration
{
string ConnectiongString { get; set; }
string DatabaseName { get; set; }
}
MongoDBConfiguration
public class MongoDBConfiguration : IMongoDBConfiguration
{
public string ConnectiongString { get; set; }
public string DatabaseName { get; set; }
}
IMongoDBProvider
public interface IMongoDBProvider
{
IMongoDatabase GetDatabase();
}
IMongoDBProvider
public class MongoDBProvider : IMongoDBProvider
{
private readonly IMongoDBConfiguration _mongoDBConfiguration;
public MongoDBProvider(IMongoDBConfiguration mongoDBConfiguration)
{
_mongoDBConfiguration = mongoDBConfiguration;
}
public IMongoDatabase GetDatabase()
{
return new MongoClient(_mongoDBConfiguration.ConnectiongString)
.GetDatabase(_mongoDBConfiguration.DatabaseName);
}
}
MongoDbRepository<TEntity>
public class MongoDbRepository<TEntity>
{
public virtual IMongoDatabase Database
{
get { return _databaseProvider.GetDatabase(); }
}
public virtual IMongoCollection<TEntity> Collection
{
get
{
return Database.GetCollection<TEntity>(typeof(TEntity).Name);
}
}
private readonly IMongoDBProvider _databaseProvider;
public MongoDbRepository(IMongoDBProvider databaseProvider)
{
_databaseProvider = databaseProvider;
}
public IQueryable<TEntity> GetAll()
{
return Collection.AsQueryable();
}
public TEntity Insert(TEntity entity)
{
Collection.InsertOne(entity);
return entity;
}
}
测试用例:
[TestMethod()]
public void InsertTest()
{
MongoDBProvider provider = new MongoDBProvider(new MongoDBConfiguration() { DatabaseName = "smartcontrol", ConnectiongString = "mongodb://localhost:27017" });
MongoDbRepository<SensorData> dbRepository = new MongoDbRepository<SensorData>(provider);
SensorData sensorData = dbRepository.Insert(new SensorData() { Device_id = "001", ModifyTime = DateTime.UtcNow, Data = new SensorItem() });
List<SensorData> datas = dbRepository.Collection.Find(m => m.Device_id == "001").ToList();
var list = dbRepository.Collection.Find(x => x.Device_id == "001")
.ToList();
Assert.IsNotNull(list);
}
通过命令查看:
链接:https://pan.baidu.com/s/1-pmyvu9oxqqtGmqtE42v1g
提取码:95vq