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

本文介绍了一个基于MongoDB的日志管理系统,该系统支持多种检索条件,包括日志级别、时间范围和关键字搜索等,并实现了高效的日志查询功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

感谢各位的阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值