springdata整合mongodb一些方法包括or,and,regex等等《有待更新》

这几天接触mongodb以及springdata,自己英语比较戳,所以整理这些方法花的时间多了点,不过也是我第一次在外国网站整理技术

不多说,直接上代码,这里只是给出一些操作方法而已,如果有需要源码的,请Q我206314068,如转载请注明出处

  1 package mongodbProject1;
  2 
  3 import java.util.List;
  4 
  5 import mg.pojo.User;
  6 import mg.pojo.UserList;
  7 import mg.service.UserService;
  8 
  9 
 10 import org.springframework.context.ApplicationContext;
 11 import org.springframework.context.support.ClassPathXmlApplicationContext;
 12 import org.springframework.data.mongodb.core.MongoTemplate;
 13 import org.springframework.data.mongodb.core.query.Criteria;
 14 import org.springframework.data.mongodb.core.query.CriteriaDefinition;
 15 import org.springframework.data.mongodb.core.query.Query;
 16 
 17 import com.mongodb.CommandResult;
 18 import com.mongodb.DBObject;
 19 
 20 public class Test {
 21 static ApplicationContext context=null;
 22 static MongoTemplate mongoTemplate=null;
 23 static{
 24      context=new ClassPathXmlApplicationContext("applicationContext.xml");
 25     mongoTemplate=context.getBean(MongoTemplate.class);
 26 }
 27 /**
 28  * 查询UserName中等于123的
 29  * where(String n) is(String s)
 30  */
 31 @org.junit.Test
 32 public void TestFind(){
 33     
 34     Query query=Query.query(
 35     Criteria.where("UserName").is("123"));// is相当于sql语句中的=
 36     DBObject obj=query.getFieldsObject();
 37     try{
 38     List<User>userlist=mongoTemplate.find(query, User.class);
 39     System.out.println(userlist);
 40     }catch(Exception e){e.printStackTrace();}
 41     
 42 }
 43 /**
 44  * all()方法是相当于and一样,功能是查询所有某个类型是数组或列表的字段中包含有"00"与"lzh"的记录具体详见
 45  * http://docs.mongodb.org/manual/reference/operator/query/all/
 46  * 测试数据:
 47  * {
 48    
 49    Password: "xyz",
 50   UserName: [ "school", "book", "bag", "headphone", "appliance" ],
 51 }
 52  */
 53 @org.junit.Test
 54 public void testAll(){
 55     Query query=Query.query(Criteria.where("UserName").all("00","lzh"));
 56     try{
 57         List<UserList>userlist=mongoTemplate.find(query, UserList.class);System.out.println(userlist);    
 58     }catch(Exception e){e.printStackTrace();}
 59 }
 60 /**
 61  * elemMatch()方法使用,其数据库格式如下
 62  * 查询的是对象数组下对象属性是否匹配相应的值
 63  * 数据格式如下:
 64  * db.inventory.find( {
 65                      qty: { $all: [
 66                                     { "$elemMatch" : { size: "M", num: { $gt: 50} } },
 67                                     { "$elemMatch" : { num : 100, color: "green" } }
 68                                   ] }
 69                    } )
 70  */
 71 @org.junit.Test
 72 public void testelemMatch(){
 73     Criteria c=new Criteria();
 74     Query qm=new Query();
 75     qm.addCriteria(c.elemMatch(Criteria.where("UserName").is("lzh1").and("Password").is(100)));//括号里的字符串是数据字段名称
 76     DBObject s=qm.getQueryObject();//转换成DBObject为了更方便获取得到字符串命令
 77     String n=s.toString();
 78     Query query=Query.query(Criteria.where("user").all(s));
 79     try{
 80         List<UserList>userlist=mongoTemplate.find(query, UserList.class);System.out.println("list大小"+userlist.size()+"
"+userlist);    
 81     }catch(Exception e){e.printStackTrace();}
 82 }
 83 /**
 84  * and操作,相当于sql语句中的and
 85  */
 86 @org.junit.Test
 87 public void testAnd(){
 88     Query query=Query.query(Criteria.where("UserName").is("00").and("Password").is("123"));
 89     try{
 90     
 91         List<User>userlist=mongoTemplate.find(query, User.class);System.out.println("list大小"+userlist.size()+"
"+userlist);    
 92     }catch(Exception e){e.printStackTrace();}
 93 }
 94 /**
 95  * 该方法是使用regex()(正则表达式)方法以及or(或)操作查询数据
 96  * 相当于db.user.find({ "UserName" : "00", "$or" : [{ "Password" : /lz/ }] });
 97  */
 98 @org.junit.Test
 99 public void testor(){
100     
101     try{
102     Criteria c=Criteria.where("Password").regex("lz");//这里的正则表达式是/lzh/
103         Query query=Query.query(Criteria.where("UserName").is("00").orOperator(c));
104         
105         List<User>userlist=mongoTemplate.find(query, User.class);
106         System.out.println("list大小"+userlist.size()+"
"+userlist);    
107     }catch(Exception e){e.printStackTrace();}
108 }
109 /**使用正则表达式查询
110  * Criteria.where("Password").regex(re, options);其中re,option 都是字符串,
111  * option可以选值为:i,m,x,s   i表示不区分大小写,m表示能使用^以及$等正则表达式来识别数据库中使用
换行的每一行开始字符以及字符。
112  * x
113  * 具体原文介绍http://docs.mongodb.org/manual/reference/operator/query/regex/
114  */
115 @org.junit.Test
116 public void testRegex(){
117     
118     try{
119         Criteria c=Criteria.where("Password").regex("lz","i");//这里的正则表达式是/lzh/
120         
121             Query query=Query.query(c);
122             
123             List<User>userlist=mongoTemplate.find(query, User.class);
124             System.out.println("list大小"+userlist.size()+"
"+userlist);    
125         }catch(Exception e){e.printStackTrace();}
126 }
127 }
原文地址:https://www.cnblogs.com/bornteam/p/4129121.html