zoukankan      html  css  js  c++  java
  • MongoDB学习笔记~复杂条件拼接和正则的使用

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

    大叔日志管理UI

    对多个检索条件的支持

    1. 条件创建者
    2. 初者化空条件
    3. 条件拼接

    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进行布局,这样有移动设备上也可以使用!

    感谢各位的阅读!

  • 相关阅读:
    onmousewheel
    Zepto 使用中的一些注意点(转)
    oninput onpropertychange 监听输入框值变化
    try catch
    center的用法
    [转]你的编程语言可以这样做吗?(map/reduce的js示范) (转)
    vue中 $event 的用法--获取当前父元素,子元素,兄弟元素
    chrome的vue插件——vue.js devtools的安装
    说明与比较:new Vue() 和 export default {}
    Vue反转字符串及join(),reverse()与 split()函数用法解析
  • 原文地址:https://www.cnblogs.com/lori/p/6609925.html
Copyright © 2011-2022 走看看