Java 实现对mongodb and or 和and or联合查询操作

本文介绍如何使用MongoDB进行复杂查询,包括AND、OR条件的应用、范围查询及多字段联合查询等高级技巧。通过示例代码展示了如何实现这些查询,帮助开发者更好地理解和掌握MongoDB查询操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AND:

[java]  view plain  copy
  1. public void 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:
[java]  view plain  copy
  1. public void 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.           
  10.     DBCursor dbCursor = coll.find(queryCondition);      
  11.     while(dbCursor.hasNext()){
        DBObject dbObj= cursor.next();
        System.out.println(dbObj.get("age"));
       }
  12.  
  13. }      


OR:

[java]  view plain  copy
  1. public void 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.           
  10.     DBCursor dbCursor = coll.find(queryCondition);      
  11.          while(dbCursor.hasNext()){
        DBObject dbObj= cursor.next();
        System.out.println(dbObj.get("age"));
       }
  12. }    


in:

[java]  view plain  copy
  1. public void 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.           
  10.     DBCursor dbCursor = coll.find(queryCondition);      
  11.      while(dbCursor.hasNext()){
        DBObject dbObj= cursor.next();
        System.out.println(dbObj.get("age"));
       }
  12. }    




自己的:


and 和or的联合查询条件 (换成sql 这个查询条件就是  m=1 and (a=0 or a=1) and (b=1 or c=1))

[java]  view plain  copy
  1. public  DBObject getWhereField(){  
  2.         DBObject wheremap = new BasicDBObject();  
  3.         wheremap.put("m"1);  
  4. //        
  5.           
  6.         DBObject[] orDbj = new BasicDBObject[2];  
  7.         orDbj[0] = new BasicDBObject("a"0);  
  8.         orDbj[1] = new BasicDBObject("a"1);  
  9.           
  10.         DBObject[] orDbj1 = new BasicDBObject[2];  
  11.         orDbj1[0] = new BasicDBObject("b"1);  
  12.         orDbj1[1] = new BasicDBObject("c"1);  
  13.           
  14.         BasicDBList values = new BasicDBList();      
  15.         values.add(new BasicDBObject("$or", orDbj));  
  16.         values.add(new BasicDBObject("$or", orDbj1));  
  17.           
  18.         wheremap.put("$and", values);  
  19.         return wheremap;  
  20.     }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值