您的位置:首页 > 数据库 > Mongodb

MongoDB学习笔记~复杂条件拼接和正则的使用

2017-03-24 10:01 435 查看
在大叔lind框架里有日志组件logger,而在日志实现方式上有file,mongodb,sql,json等方式,对分布式日志处理上大叔推荐使用mongodb进行存储,除了它的高效写入,灵活的结构外,还有对复杂条件的支持,你可以从百万数据中查询到你需要的内容,这点是关系数据库不能实现的,你无法想法使用like这种语句是百万数据中全表扫描...

大叔日志管理UI



对多个检索条件的支持

条件创建者

初者化空条件

条件拼接

NameValueCollection nv = new NameValueCollection();

var builder = Builders<GlobalLogger>.Filter;
var filter = builder.Empty;
if (!string.IsNullOrWhiteSpace(level) && level != "All")
{
filter = builder.Eq("level", level);
nv.Add("level", level);
}
if (startTime.HasValue)
{
filter = filter & builder.Gte("DataCreateDateTime", startTime.Value);
nv.Add("startTime", startTime.Value.ToString());
}
if (endTime.HasValue)
{
filter = filter & builder.Lte("DataCreateDateTime", endTime.Value);
nv.Add("endTime", endTime.Value.ToString());
}
if (!string.IsNullOrWhiteSpace(keyword))
{
filter = filter & builder.Regex("Message", new BsonRegularExpression(new Regex(keyword)));
nv.Add("keyword", keyword);
}
int pageSize = 10;
nv.Add("pageSize", pageSize.ToString());
int skip = (int)Math.Ceiling((double)((page - 1) * pageSize));

var table = Lind.DDD.MongoDbClient.MongoManager<GlobalLogger>.Instance
.Find(filter)
.SortBy(i => i.DataCreateDateTime);
ViewBag.total = table.Count();
ViewBag.nv = nv;

var model = table.Skip(skip)
.Limit(pageSize)
.ToList();

return View(model);


然后页面上直接放表表格即可,建议通过bootstrap进行布局,这样有移动设备上也可以使用!

感谢各位的阅读!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: