Java mongodb查找函数返回空数组结果
我有两个mongodb collections员工和部门,如下所示 员工收款: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
{
"_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上的大多数内容都有“标签”,您应该使用这些标签对问题进行分类。