MongoDB聚合:过滤嵌套数组并投影指定嵌套字段
MongoDB聚合:过滤嵌套数组并投影指定嵌套字段
要实现过滤嵌套数组(保留年龄为9的学生)同时仅返回每个学生的name和pets字段,你需要在$filter之后配合$map操作来对过滤后的数组元素做字段投影。修改后的聚合代码如下:
db.classes.aggregate([ { "$match": {} }, { "$project": { "_id": 0, "teacher": 1, "students": { "$map": { input: { "$filter": { input: "$students", cond: { "$eq": [ "$$this.age", 9 ] } } }, as: "student", in: { "name": "$$student.name", "pets": "$$student.pets" } } } }} ])
代码说明:
$filter:先从students数组中筛选出age等于9的元素,得到符合条件的学生集合。$map:遍历过滤后的学生集合,对每个元素仅提取name和pets字段,生成新的数组结构。$project:控制最终文档的字段,隐藏_id,保留teacher和处理后的students数组。
执行上述聚合操作后,将得到你期望的结果:
{ "teacher": "Ben", "students": [ { "name": "Jon", "pets": 3 }, { "name": "Eva", "pets": 2 } ] }
内容的提问来源于stack exchange,提问作者Marc Grue
相关产品推荐
相关产品推荐

