MongoDB查询:移除数组文档的std字段并过滤空subjects数组
MongoDB 文档字段处理解决方案
可以用聚合框架的$project结合$map、$cond来实现需求,具体查询语句如下:
db.collection.aggregate([ { $project: { school: { $map: { input: "$school", as: "item", in: { student: "$$item.student", subjects: { $cond: { if: { $gt: [ { $size: "$$item.subjects" }, 0 ] }, then: "$$item.subjects", else: "$$REMOVE" } } } } } } } ])
语句说明:
$aggregate:启动聚合管道处理文档$project:重新构造输出结构,只保留处理后的school数组$map:遍历school数组里的每个学生对象,逐个处理$cond+$size:判断subjects数组长度是否大于0,只有非空时才保留该字段;空数组时用$$REMOVE直接移除字段- 未显式声明
std字段,所以自动从输出中排除,实现移除std的要求
执行这个查询后,就能得到你想要的结果:移除所有学生对象的std字段,且空的subjects字段会被自动隐藏。
内容的提问来源于stack exchange,提问作者Lakshit Sanghrajka
相关产品推荐
相关产品推荐

