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

MongoDB Java驱动查询异常:按d>2、a="ABC"、b="AA"筛选无结果求助

解决MongoDB Java查询无结果问题并构建指定条件查询

兄弟,我瞅了你的样本数据和Java代码,一眼就发现问题根源了——你代码里用的查询字段名和MongoDB实际存的字段完全不匹配!样本数据里的字段是a、b、c、d,但你代码里却写了country、ccy、type这些,这肯定查不到数据啊!

下面我给你修正代码,同时实现你需要的d>2, a="ABC", b="AA"这个查询条件:

修正后的查询条件构建方法

首先把字段名对应正确,然后实现指定的过滤逻辑:

import org.apache.commons.lang3.StringUtils;
import org.bson.Document;

public Document buildCorrectCriteria(String a, String b, Double d) {
    Document criteria = new Document();
    
    // 匹配a="ABC"
    if (StringUtils.isNotBlank(a)) {
        criteria.append("a", a);
    }
    
    // 匹配b="AA"
    if (StringUtils.isNotBlank(b)) {
        criteria.append("b", b);
    }
    
    // 匹配d>2
    if (d != null) {
        criteria.append("d", new Document("$gt", d));
    }
    
    // 如果还有其他需要的字段(比如原来的e、f),可以按同样逻辑添加,注意字段名要和MongoDB一致
    return criteria;
}

执行查询的代码

调用上面的方法生成条件,然后执行查询:

// 生成指定条件:a="ABC", b="AA", d>2
Document queryCriteria = buildCorrectCriteria("ABC", "AA", 2.0);

// 执行查询,限制返回10条数据
Finderable<Document> findDocument = dbName.find(queryCriteria).limit(10);

// 遍历结果(如果你需要获取数据的话)
for (Document doc : findDocument) {
    System.out.println(doc.toJson());
}

额外说明

  • 如果你原来的方法里还有e、f这些参数,要注意它们对应的MongoDB字段名是什么,别再像之前那样写错了,比如原来的aNumber、iCode要确认MongoDB里有没有这些字段,或者是不是对应样本里的某个字段。
  • 确保你的StringUtils导入正确(比如用Apache Commons Lang的),如果不想用第三方库,也可以自己写空值判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:29:36