如何在MongoDB多层嵌套文档中查询level5对象内的_id字段值
MongoDB嵌套字段查询方法
要获取嵌套层级下的字段值,MongoDB支持使用点符号定位嵌套结构的指定字段,以下是两种常用场景的查询语句:
1. 筛选并仅返回level5下的_id字段
使用find()方法配合投影配置即可实现:
// 无过滤条件,返回所有文档的level5._id字段 db.collection.find( {}, { "level1.level2.level3.level4.level5._id": 1, _id: 0 // 排除文档默认的根_id字段 } )
如果需要筛选level5._id为特定值的文档,只需在第一个查询条件参数中添加匹配规则:
// 筛选level5._id = 2的文档,仅返回目标字段 db.collection.find( { "level1.level2.level3.level4.level5._id": 2 }, { "level1.level2.level3.level4.level5._id": 1, _id: 0 } )
默认返回的结果会保留原始嵌套结构,格式如下:
{ "level1" : { "level2" : { "level3" : { "level4" : { "level5" : { "_id" : 2 } } } } } }
2. 直接返回扁平化的_id值
如果不需要保留原始嵌套结构,可使用聚合管道直接提取字段值并重命名:
db.collection.aggregate([ { $project: { _id: 0, level5Id: "$level1.level2.level3.level4.level5._id" } } ])
返回结果格式:
{ "level5Id": 2 }
内容的提问来源于stack exchange,提问作者Paweł Ada
相关产品推荐
相关产品推荐

