.netcore MongoDB.Driver 版本才2.8 与aspnet差距太大,网上找很多资料没有现成的代码。

        public override async Task<PagerList<NewsContentDto>> PagerQueryAsync(NewsContentQuery parameter)
{
FilterDefinitionBuilder<NewsContentDto> builder = Builders<NewsContentDto>.Filter;
string p = parameter.Keyword == null? $".*{Regex.Escape("")}.*": $".*{Regex.Escape(parameter.Keyword)}.*";
FilterDefinition <NewsContentDto> filter2 = builder.Regex("title", new BsonRegularExpression(new Regex(p, RegexOptions.IgnoreCase)));
//var filter1 = Builders<T>.Filter.Regex("title", new BsonRegularExpression(new Regex(".*" + Regex.Escape("英超") + ".*", RegexOptions.IgnoreCase)));
//var filter1 = Filter.Regex(x => x.EnglishName, new MongoDB.Bson.BsonRegularExpression(parameter.Keyword, "i"));
//BsonDocument filter = new BsonDocument {{"title", $"/{parameter.Keyword}/" } };
//if(parameter.classifyId>0) filter.Add("classifyId", parameter.classifyId); var query = new QueryMongoParameter<NewsContentDto>(parameter, "news_content", filter2);
var ret = await MongoContext.PagerQueryAsync(query);
return ret;
}

分页查询

        public async Task<PagerList<T>> PagerQueryAsync<T>(QueryMongoParameter<T> query)
{
var skip = (query.Page - ) * query.PageSize;
var collection = _database.GetCollection<T>(query.CollectName);
var data = await collection.Find(query.Filter).Sort(query.Sort).Project(query.Projection).Skip(skip).Limit(query.PageSize).ToListAsync();
var total = await collection.CountAsync(query.Filter);
var ret = new List<T>();
data.ForEach(d =>
{
string s = d.ToString().Replace("\"_id\"", "\"id\"");
ret.Add(Helpers.Json.ToObject<T>(s));
});
return new PagerList<T>(query.Page, query.PageSize, (int)total, ret);
}

补充

    public class PageMongoParameter : ParameterBase
{
public BsonDocument Sort { get; }
public BsonDocument Skip { get; }
public BsonDocument Limit { get;}
public BsonDocument Filter2 { get; } public BsonDocument[] Pipeline { get; set; }
public PageMongoParameter(PageRequest req, string collectName, BsonDocument filter=null,BsonDocument sort=null, BsonDocument filter2 = null)
{
CollectName = collectName;
Page = req.pageindex;
PageSize = req.pagesize;
Limit = new BsonDocument { { "$limit", PageSize } };
Skip = new BsonDocument { { "$skip", (Page-)*PageSize} }; if (sort == null)
{
if (!string.IsNullOrEmpty(req.order)) Sort = new BsonDocument { { "$sort", new BsonDocument { { req.order, } } } };
}
else
{
Sort = sort;
} if (filter != null && filter2==null)
{
var dom = filter.GetElement();
Filter2 = BsonDocument.Parse(dom.Value.ToJson());
}
Filter2 = Filter2 ?? new BsonDocument(); if (filter == null && Sort == null)
Pipeline = new[] {Skip, Limit};
else
{
if(filter!=null && Sort != null)
Pipeline = new[] { filter,Skip, Limit,Sort };
else
Pipeline = filter == null ? new[] {Skip, Limit, Sort} : new[] { filter,Skip, Limit};
}
} }

.netcore mongodb 分页+模糊查询+多条件查询的更多相关文章

  1. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  2. [转]NHibernate之旅(4):探索查询之条件查询(Criteria Query)

    本节内容 NHibernate中的查询方法 条件查询(Criteria Query) 1.创建ICriteria实例 2.结果集限制 3.结果集排序 4.一些说明 根据示例查询(Query By Ex ...

  3. 利用PHP访问数据库——实现分页功能与多条件查询功能

    1.实现分页功能 <body><table width="100%" border="1">  <thead>    < ...

  4. 【Spring Data 系列学习】Spring Data JPA 自定义查询,分页,排序,条件查询

    Spring Boot Jpa 默认提供 CURD 的方法等方法,在日常中往往时无法满足我们业务的要求,本章节通过自定义简单查询案例进行讲解. 快速上手 项目中的pom.xml.application ...

  5. SpringBoot JPA + 分页 + 单元测试SpringBoot JPA条件查询

    application.properties 新增数据库链接必须的参数 spring.jpa.properties.hibernate.hbm2ddl.auto=update 表示会自动更新表结构,所 ...

  6. dhtmlxGrid分页查询,条件查询实例

    使用jquery的ajax get将页面条件请求到后台,取得数据库数据,分页查询,返回前台grid中. 引入所需文件: <script>window.dhx_globalImgPath = ...

  7. Mybatis框架模糊查询+多条件查询

    一.ISmbmsUserDao层 //根据姓名模糊查询 public List<Smbms> getUser(); //多条件查询 public List<Smbms> get ...

  8. mongodb根据字符长度作为条件查询

    { $where:"this.XXX.length==2" } 用$where条件查询,等号要用==.虽说$where查询可能效率不是很好,这只是我能想到的,有更好的方法欢迎指教

  9. MySQL数据库6 -查询基础,简单查询,条件查询,对查询结果排序

    一.SELECT语句 SELECT COL1,COL2,....COLn FROM TABLE1,TABLE2,....TABLEn [WHERE CONDITIONS] -- 查询条件 [GROUP ...

随机推荐

  1. python 爬虫小案例

    爬取百度贴吧帖子信息 #!/usr/bin/env python # -*- coding: utf-8 -*- # author: imcati import requests,re,time cl ...

  2. PTA(Advanced Level)1036.Boys vs Girls

    This time you are asked to tell the difference between the lowest grade of all the male students and ...

  3. 并发编程 深入分析Volatile的实现原理

    在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”.可见性的意思是当一个线 ...

  4. jpa报错 Unable to acquire a connection from driver [null], user [null] and URL [null]

    jpa报错 Unable to acquire a connection from driver [null], user [null] and URL [null] 为啥报错 因为你在persist ...

  5. NOIP 2017 逛公园 题解

    题面 这道题是一道不错的计数类DP: 首先我们一定要跑一遍dijkstra来求得每个点到1号点的最短路: 注意题干,题中并没有说所有点都可以到达n好点,只说了存在一条1号点到n号点的路径:所以我们在反 ...

  6. CSS(下)

    目录 CSS(下) CSS属性相关 宽和高 字体属性 背景属性 边框 border-radius display属性 CSS盒子模型 margin外边距 padding内填充 浮动(float) 限制 ...

  7. 剑指Offer 1-41 代码(python实现)

    今天主要写了一下offer 1-41题,余下的稍后整理 1 """ 1 镜像二叉树: 递归 """ def mirror(root): if ...

  8. 牛客 2B 树 (组合计数)

    传送门 大意: 给定n节点树, 求划分为不超过$k$个连通块的方案数. n,k<=300. 核心观察是每个连通块深度最低的点固定以后染色方案就固定了. 所以答案为$\sum\limits_{i= ...

  9. C数据结构排序算法——希尔排序法用法总结(转http://www.cnblogs.com/skywang12345/p/3597597.html)

    希尔排序介绍 希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进.该方法又称缩小增量排序,因DL.Shell于1959年提出而得名. 希尔排序实质上是一种分组插入方法.它 ...

  10. Mac下的Web性能压力测试工具:ab(ApacheBench)

    Web开发,少不了的就是压力测试,它是评估一个产品是否合格上线的基本标准. ab是一种用于测试Apache超文本传输协议(HTTP)服务器的工具.apache自带ab工具,可以测试Apache.IIS ...