xml地图|网站地图|网站标签 [设为首页] [加入收藏]

您的位置:亚洲必赢 > 计算机尝试 > 多条件查询,mogodb多条件拼接

多条件查询,mogodb多条件拼接

发布时间:2019-05-30 05:12编辑:计算机尝试浏览(84)

    起因

    此时此刻大家应用mongodb举办查询时,一时大家的尺码是分块生成的,它或者源于三个列表里,大家的规格亟待基于列表去再次回到数据,这里有个难点,若是遍历列表,然后每趟都去从mongodb里询问数据 ,这种性质明显是不佳的,大家供给把尺度举行拼接,二回把数据查询出来!

    先是定义3个静态类

    切换成新的分段进行支付

    被坑了两遍,记录加深回想

    多条件查询,mogodb多条件拼接。分析

    使用Criteria这几个指标去营造查询条件,使用orOperator来组成八个Criteria实例,最后将列表里富有标准拼接出来,从再次来到查询三次就可以回到全体数据 。

    Criteria[] criterias = criteriaList.toArray(new Criteria[criteriaList.size()]);
    Criteria criteria = new Criteria();
    criteria.orOperator(criterias);
    Query query = Query.query(criteria);

     1 public static class QueryAssembly
     2     {
     3         /// <summary>
     4         /// 返回true
     5         /// </summary>
     6         /// <typeparam name="T"></typeparam>
     7         /// <returns></returns>
     8         public static Expression<Func<T, bool>> True<T>()
     9         { 
    10             return f => true; 
    11         }
    12 
    13         /// <summary>
    14         /// false
    15         /// </summary>
    16         /// <typeparam name="T"></typeparam>
    17         /// <returns></returns>
    18         public static Expression<Func<T, bool>> False<T>() 
    19         { 
    20             return f => false; 
    21         }
    22 
    23         /// <summary>
    24         /// or
    25         /// </summary>
    26         /// <typeparam name="T"></typeparam>
    27         /// <param name="expr1"></param>
    28         /// <param name="expr2"></param>
    29         /// <returns></returns>
    30         public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1,Expression<Func<T, bool>> expr2)
    31         {
    32             var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
    33             return Expression.Lambda<Func<T, bool>>
    34                   (Expression.Or(expr1.Body, invokedExpr), expr1.Parameters);
    35         }
    36 
    37         /// <summary>
    38         /// and
    39         /// </summary>
    40         /// <typeparam name="T"></typeparam>
    41         /// <param name="expr1"></param>
    42         /// <param name="expr2"></param>
    43         /// <returns></returns>
    44         public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1,Expression<Func<T, bool>> expr2)
    45         {
    46             var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
    47             return Expression.Lambda<Func<T, bool>>
    48                   (Expression.And(expr1.Body, invokedExpr), expr1.Parameters);
    49         }  
    50     }
    
    git checkout -b ninth/conditions_two
    

    oracle :

    实现

    private List<x> getClients(List<CodeAccountPeriod> codeAccountPeriods) {
      List<Criteria> criteriaList = new ArrayList<>();
        for (CodeAccountPeriod codeAccountPeriod : codeAccountPeriods) {
          criteriaList.add(where("accountPeriod").is(codeAccountPeriod.getAccountPeriod())
              .and("code").is(codeAccountPeriod.getCode())
          );
        }
        Criteria[] criterias = criteriaList.toArray(new Criteria[criteriaList.size()]);
        Criteria criteria = new Criteria();
        criteria.orOperator(criterias);
        Query query = Query.query(criteria);
        List<String> fields = new ArrayList<String>(
            Arrays.asList("accountPeriod", "code", "client", "taxProperty", "version"));
        for (String name : fields) {
          query.fields().include(name);
        }
        List<x> clients = mongoTemplate.find(query, x);
    return clients;
    

    有的时候候化解难题的方法能够有种种,我们必要从另三个上边去思量它。

    定义Page类

    可以穿梭的往conditions增添新的基准语句

    动用处境能够是判别是不是指引有些参数----假如这个参数存在那么就增加新的尺码语句

    图片 1

    图片 2

    图片 3

    图片 4

    金沙4166 ,如上实行了多条sql语句,还也会有CACHE(前面补充),大家修改为如下SQL语句未有冗余,也从不CACHE了:

    图片 5

    图片 6

    gsub的用法不精通能够直接查看源码,如下大家来看源码中有关该格局的定义函数里面唯有1行注释掉的代码。然则大家照例能够依靠该函数上方的那几行注释得到该函数的用法

    图片 7

      select * from table_name where 1=1 

    本文由亚洲必赢发布于计算机尝试,转载请注明出处:多条件查询,mogodb多条件拼接

    关键词: Asp.net MVC Asp.net WebA Act

上一篇:jQuery的Cookie使用

下一篇:没有了