You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java MongoDB驱动中如何构造Name匹配ABC或DFG的正则查询?

在MongoDB Java驱动中构造多值LIKE(OR条件)的查询方法

嗨,很高兴能帮你解决这个MongoDB Java驱动的查询问题!你已经掌握了单正则的写法,要实现类似SQL里Name LIKE 'ABC' OR 'DFG'的逻辑,核心就是用MongoDB的$or操作符来组合多个正则条件。

基础实现(使用BasicDBObject)

如果你还在使用旧版驱动里的BasicDBObject,可以这样写:

import com.mongodb.BasicDBObject;
import java.util.Arrays;

// 分别构造两个正则查询条件:匹配包含ABC或DFG的name字段
BasicDBObject matchABC = new BasicDBObject("name", new BasicDBObject("$regex", "ABC"));
BasicDBObject matchDFG = new BasicDBObject("name", new BasicDBObject("$regex", "DFG"));

// 用$or操作符将两个条件组合成OR逻辑
BasicDBObject orQuery = new BasicDBObject("$or", Arrays.asList(matchABC, matchDFG));

// 执行查询(假设collection是你的MongoCollection实例)
// DBCursor cursor = collection.find(orQuery);

进阶:不区分大小写的匹配

如果需要忽略大小写(类似SQL的LIKE '%abc%'不区分大小写),可以给正则加上$options: "i"参数:

BasicDBObject matchABC = new BasicDBObject("name", 
    new BasicDBObject("$regex", "ABC").append("$options", "i"));
BasicDBObject matchDFG = new BasicDBObject("name", 
    new BasicDBObject("$regex", "DFG").append("$options", "i"));

新版驱动推荐写法(使用Document)

如果你用的是MongoDB 3.x及以上的驱动,官方更推荐使用Document类代替BasicDBObject,写法更简洁:

import org.bson.Document;
import java.util.Arrays;

Document matchABC = new Document("name", new Document("$regex", "ABC"));
Document matchDFG = new Document("name", new Document("$regex", "DFG"));
Document orQuery = new Document("$or", Arrays.asList(matchABC, matchDFG));

// 执行查询(新版驱动的写法)
// FindIterable<Document> results = collection.find(orQuery);

简单说,$or操作符接受一个查询条件的数组,数组里的每个元素都会被当作独立的匹配条件,只要满足其中任意一个,文档就会被匹配到,完美对应SQL里的OR逻辑~

内容的提问来源于stack exchange,提问作者Ohad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:59:55