mongodb java in,如何在mongodb中使用$ in运算符和java中的两个字段

I would like to retrieve the following information:

select names from database where address like 'colombo' and age>20;

but for MongoDB in Java. Essentially, it should return all names that contain the word colombo ang age greater than 20 in them. I know that there is the $in operator in MongoDB, but how do I do the same in Java, using the Java driver? I've been trying to look for it everywhere but am getting nothing. I've tried:

query = new BasicDBObject("names", new BasicDBObject("$in", "colombo"), new BasicDBObject("age", "$gt20"));

But it didn't worked :( Please help!

解决方案

The

In your case you need a

db.collection.find({

"names": { "$regex": /colombo/, "$options": "i" },

"age": { "$gt": 20 }

})

or

db.collection.find({

"names": /colombo/i },

"age": { "$gt": 20 }

})

which can be implemented in Java as

Pattern pattern = Pattern.compile("colombo", Pattern.CASE_INSENSITIVE);

BasicDBObject query = new BasicDBObject("names", pattern)

.append("$age", new BasicDBObject("$gt", 20));

DBCursor result = coll.find(query);

If using the 3.0.x and newer drivers:

Document regx = new Document();

regx.append("$regex", "(?)" + Pattern.quote("colombo"));

regx.append("$options", "i");

Document query = new Document("names", regx).append("$age", new Document("$gt", 20));

FindIterable iterable = db.getCollection("coll").find(query);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值