MongDB之各种查询操作

接口 IMongDaoFind:

package com.net.test.mongdb.dao;

public interface IMongDaoFind {

</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUsers();

</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUserByName(String name);
 
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUserLikeName(String name);

</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUserPs();

</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUserAndOperator();

</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUserOrOperator();

</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> findUserOrOperator2();

}

 

实现类 MongDaoFindImp:

package com.net.test.mongdb.dao.imp;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository;

import com.net.test.mongdb.dao.IMongDaoFind;
import com.net.test.mongdb.entity.User;
import com.net.test.mongdb.entity.UserP;
import com.net.test.mongdb.entity.UserPsg;

/**

  • @author ***

  • @Time:2017 年 8 月 4 日 上午 10:40:33

  • @version 1.0

  • Function: TODO
    */
    @Repository
    public class MongDaoFindImp implements IMongDaoFind{

    @Resource
    protected MongoTemplate mongoTemplate;

    /**

    • @description 查询所有用户信息
      */
      @Override
      public void findUsers()
      {
      List
      <User> list = mongoTemplate.findAll(User.class);
      for(User user : list)
      {
      System.out.println(
      "name :" + user.getName()+ ", age :" + user.getAge() + ", sex :" + user.getSex());
      }
      }

    /**

    • @description 根据用户名,单条查询用户信息. 如果有重复名称,默认查询第一条
    • @param name
      */
      public void findUserByName(String name)
      {
      Query query
      = Query.query(Criteria.where("name").is(name));
      User user
      = mongoTemplate.findOne(query,User.class);
      System.out.println(
      "name :" + user.getName()+ ", age :" + user.getAge() + ", sex :" + user.getSex());
      }

    /**

    • @description 模糊查询

    • @param name
      */
      @Override
      public void findUserLikeName(String name)
      {
      Query query
      = new Query();
      query.addCriteria(Criteria.where(
      "name").regex(name));

      List<User> list = mongoTemplate.find(query, User.class);
      for(User user : list)
      {
      System.out.println(
      "name :" + user.getName()+ ", age :" + user.getAge() + ", sex :" + user.getSex());
      }
      }

    /**

    • @description 表名与 pojo 不相同进行映射
      */
      @Override
      public void findUserPs()
      {
      List
      <UserP> list = mongoTemplate.findAll(UserP.class, "user");
      for(UserP user : list)
      {
      System.out.println(
      "name :" + user.getName()+ ", age :" + user.getAge() +
      ", sex :" + user.getSex() + ", hobby :" + user.getHobby());
      }
      }

    /**

    • @description 测试多条件进行查询,测试 and 连接符
      */
      @Override
      public void findUserAndOperator() {

      Query query = new Query();
      Criteria c
      = new Criteria();
      query.addCriteria(c.andOperator(Criteria.where(
      "name").regex("车"),
      Criteria.where(
      "age").is(18)));

      List<User> list = mongoTemplate.find(query, User.class);
      for(User user : list)
      {
      //基础信息
      String name = user.getName();
      int age = user.getAge();
      String sex
      = user.getSex();

       </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内置对象</span>
       UserPsg psg =<span style="color: rgba(0, 0, 0, 1)"> user.getPsg();
      
       </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内置数组</span>
       ArrayList&lt;String&gt; listHobby = (ArrayList&lt;String&gt;<span style="color: rgba(0, 0, 0, 1)">) user.getHobby();
       StringBuffer bf </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> StringBuffer();
       </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">null</span> != listHobby &amp;&amp; listHobby.size() &gt; 0<span style="color: rgba(0, 0, 0, 1)">)
       {
           </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)">(String hobby : listHobby)
           {
               bf.append(hobby </span>+ ","<span style="color: rgba(0, 0, 0, 1)">);
           }
       }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">
       {
           bf.append(</span>""<span style="color: rgba(0, 0, 0, 1)">);
       }
      
       System.out.println(
               </span>"name : " + name +
               ", age : " + age + 
               ", sex : " + sex +
               ", hobby : " + bf.toString() +
               ", UserPsg : " +<span style="color: rgba(0, 0, 0, 1)"> psg
               );
      

      }
      }

    /**

    • @description 测试多条件进行查询,测试平行并列 or
      */
      @Override
      public void findUserOrOperator()
      {
      Query query
      = new Query();
      Criteria c
      = new Criteria();
      query.addCriteria(c.orOperator(Criteria.where(
      "name").regex("车"),
      Criteria.where(
      "age").is(10)));

      List<User> list = mongoTemplate.find(query, User.class);
      for(User user : list)
      {
      //基础信息
      String name = user.getName();
      int age = user.getAge();
      String sex
      = user.getSex();

       </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内置对象</span>
       UserPsg psg =<span style="color: rgba(0, 0, 0, 1)"> user.getPsg();
      
       </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内置数组</span>
       ArrayList&lt;String&gt; listHobby = (ArrayList&lt;String&gt;<span style="color: rgba(0, 0, 0, 1)">) user.getHobby();
       StringBuffer bf </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> StringBuffer();
       </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">null</span> != listHobby &amp;&amp; listHobby.size() &gt; 0<span style="color: rgba(0, 0, 0, 1)">)
       {
           </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)">(String hobby : listHobby)
           {
               bf.append(hobby </span>+ ","<span style="color: rgba(0, 0, 0, 1)">);
           }
       }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">
       {
           bf.append(</span>""<span style="color: rgba(0, 0, 0, 1)">);
       }
      
       System.out.println(
               </span>"name : " + name +
               ", age : " + age + 
               ", sex : " + sex +
               ", hobby : " + bf.toString() +
               ", UserPsg : " +<span style="color: rgba(0, 0, 0, 1)"> psg
               );
      

      }
      }

    /**

    • @description 测试多条件进行查询,测试包含关系 or 连接符,此处的 or 和 and 有些相似
      */
      @Override
      public void findUserOrOperator2()
      {
      Query query
      = new Query();
      query.addCriteria(Criteria.where(
      "name").regex("车").orOperator(Criteria.where("age").is(19)));

      List<User> list = mongoTemplate.find(query, User.class);
      for(User user : list)
      {
      //基础信息
      String name = user.getName();
      int age = user.getAge();
      String sex
      = user.getSex();

       </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内置对象</span>
       UserPsg psg =<span style="color: rgba(0, 0, 0, 1)"> user.getPsg();
      
       </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">内置数组</span>
       ArrayList&lt;String&gt; listHobby = (ArrayList&lt;String&gt;<span style="color: rgba(0, 0, 0, 1)">) user.getHobby();
       StringBuffer bf </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> StringBuffer();
       </span><span style="color: rgba(0, 0, 255, 1)">if</span>(<span style="color: rgba(0, 0, 255, 1)">null</span> != listHobby &amp;&amp; listHobby.size() &gt; 0<span style="color: rgba(0, 0, 0, 1)">)
       {
           </span><span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)">(String hobby : listHobby)
           {
               bf.append(hobby </span>+ ","<span style="color: rgba(0, 0, 0, 1)">);
           }
       }</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">
       {
           bf.append(</span>""<span style="color: rgba(0, 0, 0, 1)">);
       }
      
       System.out.println(
               </span>"name : " + name +
               ", age : " + age + 
               ", sex : " + sex +
               ", hobby : " + bf.toString() +
               ", UserPsg : " +<span style="color: rgba(0, 0, 0, 1)"> psg
               );
      

      }
      }
      }