如何在MongoDB中查询时直接获取扁平化的字典子字段结果?
MongoDB查询:提取嵌套字段为顶层字段
你的需求是将文档中嵌套在titles和work_ids里的字段直接提升到顶层,而非保留原嵌套结构。直接使用find的投影参数无法实现字段层级的扁平化,需要借助聚合管道的$project阶段来重命名字段。
解决方案:使用聚合管道的$project
以下是满足需求的聚合查询语句:
db.collection.aggregate([ { $match: { /* 此处填写你的查询条件,对应原find方法里的query参数 */ } }, { $project: { _id: 0, full_name: "$titles.full_name", plasma_id: "$work_ids.plasma_id" } } ])
语句解释
$match阶段:用于过滤符合条件的文档,功能和find方法的第一个参数完全一致。如果不需要过滤文档,可以直接省略这个阶段。$project阶段:_id: 0:设置为0表示排除默认返回的_id字段。full_name: "$titles.full_name":将嵌套在titles下的full_name字段,重命名并提取为顶层的full_name字段。plasma_id: "$work_ids.plasma_id":同理,把work_ids下的plasma_id提取为顶层字段。
查询结果
执行上述语句后,会得到你期望的扁平化结构:
{ "full_name" : "full name", "plasma_id" : "METRO_3423659" }
内容的提问来源于stack exchange,提问作者Arturo Elizalde
相关产品推荐
相关产品推荐

