這幾天接觸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()(正則表達式)方法以及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()+"\n"+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表示能使用^以及$等正則表達式來識別數據庫中使用\n換行的每一行開始字符以及字符。 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()+"\n"+userlist); 125 }catch(Exception e){e.printStackTrace();} 126 } 127 }