【发布时间】:2020-06-02 16:25:13
【问题描述】:
我有 2 个集合 student_details 和 subject_details,每个学生可以有多个科目,我将这些科目存储在 student_details 集合中作为参考数组。
现在我需要获取学生详细信息以及经过过滤的主题,其中 subject_details.status=ACTIVE。
如何使用$elemMatch 处理$ref 对象来实现这一点。
我正在使用类似下面的东西,但它没有返回任何记录。
db.getCollection('student_details').find( { subjects: { $elemMatch: { $ref: "subject_details", status: 'ACTIVE' }}})
student_details
================
{
"_id" : "STD-1",
"name" : "XYZ",
"subjects" : [
{
"$ref" : "subject_details",
"$id" : "SUB-1"
},
{
"$ref" : "subject_details",
"$id" : "SUB-2"
},
{
"$ref" : "subject_details",
"$id" : "SUB-3"
}
]
}
subject_details
===============
{
"_id" : "SUB-1",
"name" : "MATHEMATICS",
"status" : "ACTIVE"
}
{
"_id" : "SUB-2",
"name" : "PHYSICS",
"status" : "ACTIVE"
}
{
"_id" : "SUB-3",
"name" : "CHEMISTRY",
"status" : "INACTIVE"
}
【问题讨论】:
-
这能回答你的问题吗? Mongodb aggregation lookup with conditions
标签: mongodb spring-boot mongodb-query spring-data spring-data-mongodb