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

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   os   使用   sp   java   

這幾天接觸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()+"\n"+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()+"\n"+userlist);     92     }catch(Exception e){e.printStackTrace();} 93 } 94 /** 95  * 該方法是使用regex()(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");//這裡的Regex是/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()+"\n"+userlist);    107     }catch(Exception e){e.printStackTrace();}108 }109 /**使用Regex查詢110  * Criteria.where("Password").regex(re, options);其中re,option 都是字串,111  * option可以選值為:i,m,x,s   i表示不區分大小寫,m表示能使用^以及$等Regex來識別資料庫中使用\n換行的每一行開始字元以及字元。112  * x113  * 具體原文介紹http://docs.mongodb.org/manual/reference/operator/query/regex/114  */115 @org.junit.Test116 public void testRegex(){117     118     try{119         Criteria c=Criteria.where("Password").regex("lz","i");//這裡的Regex是/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()+"\n"+userlist);    125         }catch(Exception e){e.printStackTrace();}126 }127 }

 

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.