如何获取与查询匹配的所有嵌入文档?正如文件所说:
位置$运算符限制数组的内容 查询结果仅包含与查询匹配的第一个元素 文档。
示例:
{ "_id" : 7, semester: 3, "grades" : [ { grade: 80, mean: 75, std: 8 },
{ grade: 85, mean: 90, std: 5 },
{ grade: 90, mean: 85, std: 3 } ] }
{ "_id" : 8, semester: 3, "grades" : [ { grade: 92, mean: 88, std: 8 },
{ grade: 78, mean: 90, std: 5 },
{ grade: 88, mean: 85, std: 3 } ] }
例如,我需要std < 8
的成绩,operator $只返回第一个匹配的结果,所以我们有两个对象:
{ grade: 85, mean: 90, std: 5 }
{ grade: 78, mean: 90, std: 5 }
但我需要的结果是:
{ grade: 85, mean: 90, std: 5 },
{ grade: 90, mean: 85, std: 3 }
{ grade: 78, mean: 90, std: 5 },
{ grade: 88, mean: 85, std: 3 }
答案 0 :(得分:4)
使用聚合框架。
.aggregate([
{$unwind: "$grades"},
{$match: {"grades.std": {$lt: 8}}
])