如何在MongoDB中以字段a的值为投影属性名获取对应值
MongoDB动态字段投影查询方案
你可以通过MongoDB聚合管道实现该需求,兼容MongoDB 4.2及以上版本,完整查询语句如下:
// 请将collection替换为你实际使用的集合名 db.collection.aggregate([ { $replaceRoot: { newRoot: { $mergeObjects: [ // 保留原始_id字段 { _id: "$_id" }, // 提取a字段值对应的键值对 { $arrayToObject: { $filter: { input: { $objectToArray: "$$ROOT" }, cond: { $eq: ["$$this.k", "$a"] } } } } ] } } } ])
逻辑说明
$objectToArray: "$$ROOT":将当前完整文档转换为键值对数组,每个元素格式为{k: "字段名", v: "字段值"}$filter:过滤上述数组,仅保留键名等于当前文档a字段值的元素$arrayToObject:将过滤后的单元素键值对数组转回JSON对象$mergeObjects:将_id字段和提取出的动态键值对合并为最终输出的文档
运行上述语句后,输出结果完全符合你给出的预期格式。
内容的提问来源于stack exchange,提问作者SeekingKnowledge
相关产品推荐
相关产品推荐

