using Amazon.Runtime.Documents;
using MongoDB.Driver;
using MongoDB.Driver.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
namespace Business.Core.MongoDBHelper
{
///
/// MongoDB接口
///
///
public interface IMongoDB
{
///
/// 插入一条数据
///
///
///
Task InsertOne(T document);
///
/// 插入多条数据
///
///
///
Task InsertMany(List documents);
///
/// 获取所有数据
///
///
Task> GetAll();
///
/// 根据条件获取数据
///
///
Task> GetManyByCondition(Expression> filter);
///
/// 根据条件获取数据
///
///
Task> GetManyByIds(FilterDefinition filter);
///
/// 删除数据
///
///
///
///
Task Delete(Expression> expression, bool isOne = false);
///
/// 删除数据
///
///
///
///
Task Delete(FilterDefinition filter, bool isOne = false);
///
/// 根据条件获取结果列表
///
/// 条件Expression
/// 结果列表
Task> Find(Expression> expression, ProjectionDefinition projecter = null, SortDefinition sorter = null);
///
/// 批量更新
///
///
///
///
Task> BulkWrite(List> updates, BulkWriteOptions options = null);
///
/// 根据条件获取结果列表
///
/// 条件FilterDefinition
/// 排序规则定义
/// 查询字段定义
/// 结果列表
Task> Find(FilterDefinition filter, ProjectionDefinition projecter = null, SortDefinition sorter = null);
}
}