Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDb-查询-即使结果不为空也为空_Mongodb_Spring Repositories - Fatal编程技术网

MongoDb-查询-即使结果不为空也为空

MongoDb-查询-即使结果不为空也为空,mongodb,spring-repositories,Mongodb,Spring Repositories,我尝试为MongoDB编写一些聚合查询。我对it非常陌生,所以我很难找到问题所在: { "aggregate": "__collection__", "pipeline": [ { "$unwind": "$studia" }, { "$group": { "_id": { "course": "$course",

我尝试为MongoDB编写一些聚合查询。我对it非常陌生,所以我很难找到问题所在:

{
    "aggregate": "__collection__",
    "pipeline": [
        {
            "$unwind": "$studia"
        },
        {
            "$group": {
                "_id": {
                    "course": "$course",
                    "start": "$start"
                },
                "n": {
                    "$sum": 1
                }
            }
        },
        {
            "$sort": {
                "n": -1
            }
        }
    ]
}
此查询由Java生成。它应该计算和总结在某个日期开始的某些课程的次数。但它返回空结果。这是错误的

我的文件是:

  {
        "_id": "1006262",
        "name": "Kugujalu",
        "lname": "Najahalovu",
        "studia": [
            {
                "id": "992",
                "start": {
                    "$date": "1998-08-31T22:00:00.000Z"
                },
                "end": {
                    "$date": "2003-06-10T22:00:00.000Z"
                },
               "course": "MCH",
            }
        ],
        "_class": "com.mongodb.MongoStudent"
    }
 {
        "_id": "1006263",
        "name": "Elkjuu",
        "lname": "Xjikuju",
        "studia": [
            {
                "id": "992",
                "start": {
                    "$date": "1998-08-31T22:00:00.000Z"
                },
                "end": {
                    "$date": "2003-06-10T22:00:00.000Z"
                },
               "course": "MCH",
            }
        ],
        "_class": "com.mongodb.MongoStudent"
    }
因此,我需要返回如下结果的查询:

"start": 1998-08-31T22:00:00.000Z, "course": "MCH", "n": 2
你知道问题出在哪里吗

此生成我查询:

Aggregation agg = newAggregation(unwind("studia"), group("course","start").count().as("n"),
                sort(Sort.Direction.DESC, "n"));

{“$group”:{“\u id”:{“course”:“$studia.course”,“start”:“$studia,start”},
因此您的Java代码没有包含到“unbound”中元素的正确“完整路径”数组。输出看起来像是来自spring mongo。是否要共享代码?@NeilLunn您的意思是,不正确的完整路径?
$studia.course
而不是
$course
。没有名为
$course
的元素。这就是为什么您没有得到结果的原因。因此,您的代码应该是
组(“studia.skratka”,“studia.zaciatok\u studia”)
。添加
studia
和“点”
到开头。这就是它的工作原理。我改变了,但它仍然给我空的结果。在Java代码和数据中使用不同的字段名对此处显示的内容没有帮助。如果您实际运行我在第一条注释中给您的更正,并将其与来自mongo shell,然后您将看到正确的结果。首先查看查询应该如何工作,然后请尝试并提供一致的代码。