Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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
Java mongodb查找函数返回空数组结果_Java_Mongodb_Mongodb Query_Spring Data Mongodb_Mongo Java - Fatal编程技术网

Java mongodb查找函数返回空数组结果

Java mongodb查找函数返回空数组结果,java,mongodb,mongodb-query,spring-data-mongodb,mongo-java,Java,Mongodb,Mongodb Query,Spring Data Mongodb,Mongo Java,我有两个mongodb collections员工和部门,如下所示 员工收款: { "_id" : ObjectId("58c4a35ac2e604024321788e"), "id_employee" : 19, "employee_name" : "Lene Vestergaard Hau", "employee_address" : "Allerton", "hours" : 279, "id_department" : 1, "projects" : [ 285, 453

我有两个mongodb collections员工和部门,如下所示 员工收款:

{
"_id" : ObjectId("58c4a35ac2e604024321788e"),
"id_employee" : 19,
"employee_name" : "Lene Vestergaard Hau",
"employee_address" : "Allerton",
"hours" : 279,
"id_department" : 1,
"projects" : [
    285,
    453,
    499,
    804,
    956
],
"Children" : [
    {
        "id_child" : 38,
        "child_name" : "Caroline Herschel"
    }
]
{
"_id" : ObjectId("58c49c48c2e669d6555aa5a7"),
"id_department" : 1,
"department_name" : "dept1",
"projects" : [
    {
        "id_project" : 285,
        "project_name" : "1project 285",
        "duration" : "211"
    },
    {
        "id_project" : 453,
        "project_name" : "1project453",
        "duration" : "214"
    },
    {
        "id_project" : 499,
        "project_name" : "1project499",
        "duration" : "224"
    },
    {
        "id_project" : 804,
        "project_name" : "1project804",
        "duration" : "217"
    }
    {
        "id_project" : 956,
        "project_name" : "1project956",
        "duration" : "217"
    }
}

部门收集:

{
"_id" : ObjectId("58c4a35ac2e604024321788e"),
"id_employee" : 19,
"employee_name" : "Lene Vestergaard Hau",
"employee_address" : "Allerton",
"hours" : 279,
"id_department" : 1,
"projects" : [
    285,
    453,
    499,
    804,
    956
],
"Children" : [
    {
        "id_child" : 38,
        "child_name" : "Caroline Herschel"
    }
]
{
"_id" : ObjectId("58c49c48c2e669d6555aa5a7"),
"id_department" : 1,
"department_name" : "dept1",
"projects" : [
    {
        "id_project" : 285,
        "project_name" : "1project 285",
        "duration" : "211"
    },
    {
        "id_project" : 453,
        "project_name" : "1project453",
        "duration" : "214"
    },
    {
        "id_project" : 499,
        "project_name" : "1project499",
        "duration" : "224"
    },
    {
        "id_project" : 804,
        "project_name" : "1project804",
        "duration" : "217"
    }
    {
        "id_project" : 956,
        "project_name" : "1project956",
        "duration" : "217"
    }
] 我正在尝试执行一个查找函数,以获取有关 员工的项目。我正在使用的java代码:

coll.aggregate(Arrays.asList(
        Aggregates.match(Filters.eq("id_employee",19)),
        Aggregates.unwind("$projects"),
        Aggregates.lookup("department", "projects",               "projects.id_project", "lookupData")

)).forEach(printBlock);
}

上面的代码将lookUpdatea作为空列表返回。有谁能帮忙吗?

事实上有两个原因。根本没有像
“department.projects.id\u project”
这样的字段。实际上,路径是“projects.id\u project”,但另一个原因是,您提供的问题数据实际上没有任何匹配值。还不清楚您希望得到什么结果,因为带有匹配数据的
$lookup
结果实际上是整个
“部门”
文档,而不仅仅是匹配项目。因此,如果您的目的是获取项目信息,那么这里还有相当多的工作要做。你的建模可能需要一些修改。你使用的框架和语言也不清楚。一些代码建议使用“SpringDataMongoDB”?但出于某种原因,其中有一个
.forEach()
,因此看起来您几乎是在尝试在shell或其他东西中执行此操作。所以一切都不清楚。谢谢尼尔的评论。关于第一个原因,我使用了字段的整个路径,首先是集合名(department),然后是数组名(projects),最后是字段名(id_project)。我也省略了集合名称,但问题没有解决。第二个原因是部门集合中有匹配字段,但我没有复制问题中的匹配数据。我使用的是java和java mongo驱动程序3.4.1,但关键是您使用的“整个路径”不正确。此处不包括集合名称。相反,它只是相对于外来文件。如果你认为确实有一些东西应该匹配,你需要在你的问题中表现出来。编辑您的问题,以包含其他人可以复制您的结果的可靠数据。您还需要指定正在使用的语言和框架。stackoverflow上的大多数东西都有“标签”,你应该用它们来分类你的问题。根本没有像
“department.projects.id\u project”
这样的字段。实际上,路径是“projects.id\u project”,但另一个原因是,您提供的问题数据实际上没有任何匹配值。还不清楚您希望得到什么结果,因为带有匹配数据的
$lookup
结果实际上是整个
“部门”
文档,而不仅仅是匹配项目。因此,如果您的目的是获取项目信息,那么这里还有相当多的工作要做。你的建模可能需要一些修改。你使用的框架和语言也不清楚。一些代码建议使用“SpringDataMongoDB”?但出于某种原因,其中有一个
.forEach()
,因此看起来您几乎是在尝试在shell或其他东西中执行此操作。所以一切都不清楚。谢谢尼尔的评论。关于第一个原因,我使用了字段的整个路径,首先是集合名(department),然后是数组名(projects),最后是字段名(id_project)。我也省略了集合名称,但问题没有解决。第二个原因是部门集合中有匹配字段,但我没有复制问题中的匹配数据。我使用的是java和java mongo驱动程序3.4.1,但关键是您使用的“整个路径”不正确。此处不包括集合名称。相反,它只是相对于外来文件。如果你认为确实有一些东西应该匹配,你需要在你的问题中表现出来。编辑您的问题,以包含其他人可以复制您的结果的可靠数据。您还需要指定正在使用的语言和框架。stackoverflow上的大多数内容都有“标签”,您应该使用这些标签对问题进行分类。