如何在Spring Boot中操作MongoDB时排除顶层及嵌套层级的id字段
解决方案
你可以直接在MongoDB的查询投影中使用点符号指定嵌套数组字段的排除规则,不需要额外的聚合操作,查询写法如下:
// yourCollection替换为你的集合名 db.yourCollection.find( {}, // 查询条件,此处留空代表匹配所有文档 { "id": 0, // 排除顶层文档的id字段 "subClass.id": 0, // 排除subClass数组中所有元素的id字段 "_id": 0 // 可选,如果你同时不需要MongoDB默认生成的_id字段可以加这行 } )
参数说明
- 投影配置中值为
0代表排除对应字段,值为1代表仅返回对应字段 subClass.id是MongoDB支持的数组嵌套字段访问写法,会自动匹配数组中所有元素的id字段做处理
返回结果示例
执行上述查询后返回的结构符合你的需求:
[ { "name": "abc", "class": "top-level", "subClass": [ { "name": "def", "class": "second-level" } ] }, { "name": "xyz", "class": "top-level", "subClass": [ { "name": "def", "class": "second-level" } ] } ]
补充说明
如果你习惯用聚合查询,写法和上述投影规则完全一致,只需要把投影配置放在$project阶段即可:
db.yourCollection.aggregate([ { $project: { "id": 0, "subClass.id": 0, "_id": 0 } } ])
内容的提问来源于stack exchange,提问作者Aunny
相关产品推荐
相关产品推荐

