1. 程式人生 > >Java 實現對mongodb and or 和and or聯合查詢操作

Java 實現對mongodb and or 和and or聯合查詢操作

AND:

  1. publicvoid testAnd(){      
  2.     //agender='female' AND age > 27      
  3.     DBObject queryCondition = new BasicDBObject();      
  4.     queryCondition.put("agender""female");      
  5.     queryCondition.put("age"new BasicDBObject("$gt"27));      
  6.     DBCursor dbCursor = coll.find(queryCondition);      
  7.  while(dbCursor.hasNext()){
        DBObject dbObj= cursor.next();
        System.out.println(dbObj.get("age"));
       }
  8. }      



OR:
  1. publicvoid testOrSingleField(){      
  2.     DBObject queryCondition = new BasicDBObject();            
  3.     //age<15 OR age>27    
  4.     queryCondition = new BasicDBObject();      
  5.     BasicDBList values = new
     BasicDBList();      
  6.     values.add(new BasicDBObject("age"new BasicDBObject("$gt"27)));      
  7.     values.add(new BasicDBObject("age"new BasicDBObject("$lt"15)));      
  8.     queryCondition.put("$or", values);      
  9.     DBCursor dbCursor = coll.find(queryCondition);      
  10.     while(dbCursor.hasNext()){
        DBObject dbObj= cursor.next();
        System.out.println(dbObj.get("age"));
       }
  11. }      


OR:

  1. publicvoid testOrMultiFields(){      
  2.     DBObject queryCondition = new BasicDBObject();            
  3.     //agender=female OR age<=23    
  4.     queryCondition = new BasicDBObject();      
  5.     BasicDBList values = new BasicDBList();      
  6.     values.add(new BasicDBObject("agender""female"));      
  7.     values.add(new BasicDBObject("age"new BasicDBObject("$lte"23)));      
  8.     queryCondition.put("$or", values);      
  9.     DBCursor dbCursor = coll.find(queryCondition);      
  10.      while(dbCursor.hasNext()){
        DBObject dbObj= cursor.next();
        System.out.println(dbObj.get("age"));
       }
  11. }    


in:

  1. publicvoid testIn(){      
  2.     DBObject queryCondition = new BasicDBObject();            
  3.     //age in [13, 47]    
  4.     queryCondition = new BasicDBObject();      
  5.     BasicDBList values = new BasicDBList();      
  6.     values.add(13);      
  7.     values.add(47);      
  8.     queryCondition.put("age"new BasicDBObject("$in", values));      
  9.     DBCursor dbCursor = coll.find(queryCondition);      
  10.   while(dbCursor.hasNext()){
        DBObject dbObj= cursor.next();
        System.out.println(dbObj.get("age"));
       }
  11. }    



自己的:

and 和or的聯合查詢條件 (換成sql 這個查詢條件就是  m=1 and (a=0 or a=1) and (b=1 or c=1))

  1. public  DBObject getWhereField(){  
  2.         DBObject wheremap = new BasicDBObject();  
  3.         wheremap.put("m"1);  
  4. //      
  5.         DBObject[] orDbj = new BasicDBObject[2];  
  6.         orDbj[0] = new BasicDBObject("a"0);  
  7.         orDbj[1] = new BasicDBObject("a"1);  
  8.         DBObject[] orDbj1 = new BasicDBObject[2];  
  9.         orDbj1[0] = new BasicDBObject("b"1);  
  10.         orDbj1[1] = new BasicDBObject("c"1);  
  11.         BasicDBList values = new BasicDBList();      
  12.         values.add(new BasicDBObject("$or", orDbj));  
  13.         values.add(new BasicDBObject("$or", orDbj1));  
  14.         wheremap.put("$and", values);  
  15.         return wheremap;  
  16.     }