【发布时间】:2017-07-19 11:25:35
【问题描述】:
我在检索另一个嵌套列表的嵌套文档对象时遇到了困难。请帮我解决同样的问题。我的mongoDB文档如下:
{
"_id" : "PT5",
"departmentId" : "DEPT5",
"subDepartmentList" : [
{
"subDepartmentId" : "SUBDEPT19",
"subDepartmentName" : "X-Ray",
"labServiceList" : [
{
"_id" : "123abc",
"subDepartmentId" : "SUBDEPT19",
"labServiceName" : "serviceOne"
},
{
"_id" : "123def",
"subDepartmentId" : "SUBDEPT19",
"labServiceName" : "hello",
}
]
},
{
"subDepartmentId" : "SUBDEPT21",
"subDepartmentName" : "Haemotology",
"labServiceList" : [
{
"_id" : "456abc",
"subDepartmentId" : "SUBDEPT21",
"labServiceName" : "abcd",
}
]
}
]
}
从上面的文档中,我只想使用它的 _id 值检索 labServiceList 的一个对象(例如:“_id”:本文档中的“123abc”)。除了匹配的嵌套文档之外,我不想获得任何其他字段。我尝试过以下查询:
db.labServiceMasters.aggregate([
{"$project": {
"subDepartmentList": {"$filter": {
"input": '$subDepartmentList.labServiceList',
"as": 'labServiceList',
"cond": {"$eq": ['$$labServiceList._id', '123abc']}
}},
"_id": 0
}}
])
我也尝试过使用 $map 运算符,但没有任何问题。请帮我解决这个问题。还请帮助我在 Java 中使用 mongoTemplate 编写相同的查询。任何建议都将是可观的。在此先感谢:-)
【问题讨论】:
标签: java mongodb mongodb-query aggregation-framework spring-data-mongodb