Java中mongodb使用and和or的复合查询

 在MongoDB的JAVA查询中对应这些问题

and查询
1  //条件 startsAt< curr  and endsAt > curr
2 long curr = new Date().getTime()/1000;
3         DBObject query = new BasicDBObject();
4         query.put("startsAt",new BasicDBObject("$lte", curr));
5         query.put("endsAt",new BasicDBObject("$gte", curr));

  or 查询

1  //条件是startsAt < curr or endsAt>curr
2  BasicDBObject autoEnd = new BasicDBObject();
3          BasicDBList condList = new BasicDBList();
4           condList.add(new BasicDBObject("startsAt", new BasicDBObject("$lte", curr)));
5           condList.add(new BasicDBObject("endsAt", new BasicDBObject("$gte", curr)));
6         autoEnd.put("$or",condList);

 


这是复合查询
 1  //条件类似:project="H" and (startsAt<curr or endsAt>curr)
 2      
 3    BasicDBObject basicDBObject = new BasicDBObject();
 4 
 5         BasicDBList endList = new BasicDBList();
 6         BasicDBObject forceEnd = new BasicDBObject();
 7         forceEnd.put("project","H");
 8 
 9         BasicDBObject autoEnd = new BasicDBObject();
10         BasicDBList condList = new BasicDBList();
11         condList.add(new BasicDBObject("startsAt", new BasicDBObject("$lte", curr)));
12         condList.add(new BasicDBObject("endsAt", new BasicDBObject("$gte", curr)));
13         autoEnd.put("$or",condList);
14 
15         endList.add(forceEnd);
16         endList.add(autoEnd);
17 
18         basicDBObject.put("$and",endList);
19 
20         DBCursor cursor = mongoTemplate.getCollection("数据库表名").find(basicDBObject);

 

 
 

  

转载于:https://www.cnblogs.com/shuiyelifang/p/9103619.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值