痴心VS绝对 发表于 2017-12-15 21:45:12

Mongodb在CSharp里实现Aggregate

/// <summary>  
/// 返回UI消息树
  
/// </summary>
  
/// <returns></returns>
  
public static string GetMongoLog(DateTime? fromDate, DateTime? toDate, int page = 1)
  
{
  
string from = DateTime.Now.Date.ToString("yyyy-MM-dd");
  
string to = DateTime.Now.Date.AddDays(1).ToString("yyyy-MM-dd");
  
if (fromDate.HasValue)
  
{
  
from = fromDate.Value.ToString("yyyy-MM-dd");
  

  
}
  
if (toDate.HasValue)
  
{
  
to = toDate.Value.ToString("yyyy-MM-dd");
  
}
  
var stages = new List<IPipelineStageDefinition>();
  
stages.Add(new JsonPipelineStageDefinition<BsonDocument, BsonDocument>("{$match:{AddTime:{$gt:ISODate('" + from + "'),$lt:ISODate('" + to + "')}}}"));
  
stages.Add(new JsonPipelineStageDefinition<BsonDocument, BsonDocument>("{$group:{_id: \"$RootId\", count: {$sum: 1}}}"));
  
stages.Add(new JsonPipelineStageDefinition<BsonDocument, BsonDocument>("{$skip:" + page * 5 + "}"));
  
stages.Add(new JsonPipelineStageDefinition<BsonDocument, BsonDocument>("{$limit:5}"));
  
var pipeline = new PipelineStagePipelineDefinition<BsonDocument, BsonDocument>(stages);
  
var result = NoSql.MongodbManager<LoggerContext>.Collection.Aggregate(pipeline);
  
StringBuilder str = new StringBuilder();
  


  
str.Append("<ol>  
foreach (var item in result.ToList())
  
{
  
var timer = new List<DateTime>();
  
var old = NoSql.MongodbManager<LoggerContext>.Instance.Find(i => i.RootId == item.Values.ToArray().ToString() && i.ParentId == null).FirstOrDefault();
  
timer.Add(old.AddTime);
  
str.Append("<li style='margin:5px;border:1px dashed #aaa'>");
  
str.AppendFormat("<span style='color:red;'>{0}</span><span style='color:green'>{1}</span><span>{2}</span>"
  
, old.Url
  
, old.MessageBody
  
, old.AddTime);
  
MsgTree(str, old.ChildId, timer);
  
str.AppendFormat("<p><b><em>本次请求用时{0}毫秒({1}秒)<em></b></p>"
  
, (timer.Max() - timer.Min()).TotalMilliseconds
  
, (timer.Max() - timer.Min()).TotalSeconds);
  
str.Append("</li>");
  
}
  
str.Append("</ol>");
  
return str.ToString();
  
}
页: [1]
查看完整版本: Mongodb在CSharp里实现Aggregate