MongoDB动态字段名嵌套对象投影:获取task7全字段需求
MongoDB动态字段聚合查询调整需求
我的数据库结构如下,包含动态命名的字段:
{ id: 1, name: "N1", tasks: { project1: { task7: { count: 10, time: 1.2 }, task3: { count: 56, time: 1050 } }, project25: { task7: { count: 25, time: 10 } } } }
我参考了一段聚合代码,它几乎满足需求,但目前只返回task7的count字段,我需要获取task7内的全部字段(count和time)。原代码如下:
db.collection.aggregate([ { $project: { _id: 0, tasks: { $objectToArray: "$tasks" } } }, { $match: { "tasks.v.task7": { $exists: true } } }, { $project: { tasks: { $arrayToObject: { $filter: { input: { $map: { input: "$tasks", in: { "k": "$$this.k", "v": "$$this.v.task7.count" } } }, cond: "$$this.v" } } } } } ])
作为新手我尝试修改但没成功,希望能帮忙调整代码以返回多个字段。
更新:输出格式要求
希望输出文档以id嵌套,格式如下:
{ "id": 1, "name": "N1", "tasks_project1": { "k": "task7", "v": { "count": 10, "time": 1.2 } }, "tasks_project25": { "k": "task7", "v": { "count": 25, "time": 10 } } }
更新2
Ruben在评论区提供了符合需求的答案。
内容的提问来源于stack exchange,提问作者Rachel
相关产品推荐
相关产品推荐

