余劲峰 發表於 2019-10-8 14:51:00

mongodb and 和 or 查询

<p>db.getCollection('gxyWarnEntity').find({ "schoolId" : "f11c8ea12f457dbc19c768a8bb6357f8", "batchId" : "594f724d6974c107bd702cc6ef39183a", "$or" : [{ "studentName" : { "$regex" : "小", "$options" : "" } }, { "teacherName" : { "$regex" : "小", "$options" : "" } }] })</p>
<p>&nbsp;</p>
<p>java:</p>
<div class="cnblogs_code">
<pre>   <span style="color: rgba(0, 0, 255, 1)">public</span> List&lt;GxyWarnEntity&gt;<span style="color: rgba(0, 0, 0, 1)">selectWarnPage(GxyWarnEntitygxyWarnEntity){

      Criteria cri </span>=Criteria.where("schoolId"<span style="color: rgba(0, 0, 0, 1)">).is(gxyWarnEntity.getSchoolId());

      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(gxyWarnEntity.getBatchId()!=<span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
            cri.and(</span>"batchId"<span style="color: rgba(0, 0, 0, 1)">).is(gxyWarnEntity.getBatchId());
      }
      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(gxyWarnEntity.getDepId()!=<span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){
            cri.and(</span>"depId"<span style="color: rgba(0, 0, 0, 1)">).is(gxyWarnEntity.getDepId());
      }
      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(gxyWarnEntity.getWarningType()!=<span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){
            cri.and(</span>"warningType"<span style="color: rgba(0, 0, 0, 1)">).is(gxyWarnEntity.getWarningType());
      }
      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(gxyWarnEntity.getStudentName()!=<span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){
            cri.orOperator(Criteria.where(</span>"studentName"<span style="color: rgba(0, 0, 0, 1)">).regex(gxyWarnEntity.getStudentName()),
                  Criteria.where(</span>"teacherName"<span style="color: rgba(0, 0, 0, 1)">).regex(gxyWarnEntity.getStudentName())
                  </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">,Criteria.where("classTeacherName").regex(gxyWarnEntity.getStudentName())</span>
<span style="color: rgba(0, 0, 0, 1)">            );
      }

      Query query </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Query(cri);
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (gxyWarnEntity.getCurrPage() != <span style="color: rgba(0, 0, 255, 1)">null</span> &amp;&amp; gxyWarnEntity.getPageSize() != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
            query.skip((gxyWarnEntity.getCurrPage()</span>-1)*<span style="color: rgba(0, 0, 0, 1)">gxyWarnEntity.getPageSize())
                  .limit(gxyWarnEntity.getPageSize());
      }

      </span><span style="color: rgba(0, 0, 255, 1)">return</span> template.find(query, GxyWarnEntity.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">);
    }</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>and:&nbsp; &nbsp;</p>
<p>db.getCollection('gxyWarnEntity').find({ "schoolId" : "f11c8ea12f457dbc19c768a8bb6357f8", "batchId" : "", "$and" : [{ "warningType" : { "$gte" : 1 } }, { "warningType" : { "$ne" : 4 } }], "$or" : [{ "studentName" : { "$regex" : "小", "$options" : "" } }, { "teacherName" : { "$regex" : "小", "$options" : "" } }] })</p>
<p>&nbsp;</p>
<p>{ "schoolId" : "f11c8ea12f457dbc19c768a8bb6357f8", "batchId" : "", "$and" : [{ "warningType" : { "$gte" : 1 } }, { "warningType" : { "$ne" : 4 } }], "$or" : [{ "studentName" : { "$regex" : "小", "$options" : "" } }, { "teacherName" : { "$regex" : "小", "$options" : "" } }] } fields: Document{{}} for class: class com.zhangtao.moguding.practiceservice.entity.GxyWarnEntity in collection: gxyWarnEntity<br>2019-10-15 09:52:17.819 DEBUG 13028 --- o.s.data.mongodb.core.MongoTemplate      : Executing count: { "schoolId" : "f11c8ea12f457dbc19c768a8bb6357f8", "batchId" : "", "$and" : [{ "warningType" : { "$gte" : 1 } }, { "warningType" : { "$ne" : 4 } }], "$or" : [{ "studentName" : { "$regex" : "小", "$options" : "" } }, { "teacherName" : { "$regex" : "小", "$options" : "" } }] } in collection: gxyWarnEntity</p>
<div class="cnblogs_code">
<pre>    <span style="color: rgba(0, 0, 255, 1)">public</span> List&lt;GxyWarnEntity&gt;<span style="color: rgba(0, 0, 0, 1)">selectWarnPage(GxyWarnEntitygxyWarnEntity){

      Criteria cri </span>=Criteria.where("schoolId"<span style="color: rgba(0, 0, 0, 1)">).is(gxyWarnEntity.getSchoolId());

      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(gxyWarnEntity.getBatchId()!=<span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
            cri.and(</span>"batchId"<span style="color: rgba(0, 0, 0, 1)">).is(gxyWarnEntity.getBatchId());
      }
      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(gxyWarnEntity.getDepId()!=<span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){
            cri.and(</span>"depId"<span style="color: rgba(0, 0, 0, 1)">).is(gxyWarnEntity.getDepId());
      }
      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(gxyWarnEntity.getWarningType()!=<span style="color: rgba(0, 0, 255, 1)">null</span> &amp;&amp; gxyWarnEntity.getWarningType() !=<span style="color: rgba(0, 0, 0, 1)"> EnumUnsignType.UNSIGNONE.getType()){
            <strong>cri.andOperator(
                  Criteria.where(</strong></span><strong>"warningType"<span style="color: rgba(0, 0, 0, 1)">).gte(gxyWarnEntity.getWarningType()),
                  Criteria.where(</span>"warningType"</strong><span style="color: rgba(0, 0, 0, 1)"><strong>).ne(EnumUnsignType.UNSIGNONE.getType())
            );</strong>
      }
      </span><span style="color: rgba(0, 0, 255, 1)">if</span>(gxyWarnEntity.getStudentName()!=<span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">){
          <strong>cri.orOperator(Criteria.where(</strong></span><strong>"studentName"<span style="color: rgba(0, 0, 0, 1)">).regex(gxyWarnEntity.getStudentName()),
                  Criteria.where(</span>"teacherName"<span style="color: rgba(0, 0, 0, 1)">).regex(gxyWarnEntity.getStudentName())
                  </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">,Criteria.where("classTeacherName").regex(gxyWarnEntity.getStudentName())</span>
</strong><span style="color: rgba(0, 0, 0, 1)"><strong>            );</strong>
      }

      Query query </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Query(cri);
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (gxyWarnEntity.getCurrPage() != <span style="color: rgba(0, 0, 255, 1)">null</span> &amp;&amp; gxyWarnEntity.getPageSize() != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
            query.skip((gxyWarnEntity.getCurrPage()</span>-1)*<span style="color: rgba(0, 0, 0, 1)">gxyWarnEntity.getPageSize())
                  .limit(gxyWarnEntity.getPageSize());
      }

      </span><span style="color: rgba(0, 0, 255, 1)">return</span> template.find(query, GxyWarnEntity.<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">);
    }</span></pre>
</div>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/z360519549/p/11635366.html
頁: [1]
查看完整版本: mongodb and 和 or 查询