java - 使用 $elemMatch 将 MongoDB 查询转换为 Java

标签 java mongodb

我在将 MongoDB 查询转换为 Java 查询时遇到了很多麻烦。 我已经尝试过 QueryBuilder 和 DBObject,但无法使其工作。

这是我的 MongoDB 查询:

db.getCollection('myCollection_v2').find({
    idCab:1,
    cab: {
        $elemMatch:{
            idCat: ObjectId("14567823123688")
        }
    },
    fMod: {
        $gte: ISODate("2017-04-04T00:00:000Z"),
        $lt: ISODate("2017-04-04T23:59:590Z")
    }
})

我的 DBOBject 方法是这样的,我遇到的问题是我不能追加(对象,对象),但不能追加(字符串,对象),所以我不知道应该如何构建它:

BasicDBObject query = new BasicDBObject(
            "idCab", "1")
            .append( new BasicDBObject(
                "cab", new BasicDBObject(
                        "$elemMatch", new BasicDBObject( 
                                "idCat", categoria ))))
            .append( new BasicDBObject(
                    "fMod", new BasicDBObject( "$gte", fechaInicio )
                        .append( "$lt", fechaFin )
                    )
            );

对于 QueryBuilder,我有这个,问题是我没有设法制作有关 $elemMatch 的部分...

QueryBuilder query = new QueryBuilder().start().and(
            new QueryBuilder().start().put("idCab").is(String.valueOf(pIdPortal)).get(),
            new QueryBuilder().start().put("fMod")
                .greaterThan(fechaInicio).get(),
            new QueryBuilder().start().put("fMod")
                .lessThan(fechaFin).get();

你能帮我一下吗?我将从 MongoDB 的 50-50 爱/恨关系转变为 100 恨关系...

最佳答案

您的 DBObject 格式不正确。您尝试传递 BasicDBObject 作为键,而不是传递 String 。 只需删除两个额外的 BasicDBObject 即可,如下所示:

   BasicDBObject query = new BasicDBObject(
            "idCab", 1)
            .append("cab", new BasicDBObject(
                    "$elemMatch", new BasicDBObject(
                            "idCat", categoria)))
            .append("fMod", new BasicDBObject("$gte", fechaInicio)
                    .append("$lt", fechaFin)
            ); 

关于java - 使用 $elemMatch 将 MongoDB 查询转换为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43890222/

相关文章:

java - Xquery 正在返回一组元素的结果而不是其他元素?

mongodb - 元素 'Id' 与类的任何字段或属性不匹配

node.js - 如何计算组聚合的评分?

node.js - Mongoose 和 findAndModify

c# - MongoDB C# 驱动程序 : connection string for sharding over replica set

java - 为什么 void 方法在模拟对象上得到 NullPointerException?

java - 如何使用正则表达式查找特定模式在其他模式中出现的次数?

java - jsp如何打开随机https url?

javascript - Mongodb Node.js 通过动态键查找值

java - 单击另一个 portlet 内的链接时显示和隐藏 portlet