在mongodb聚合中向$ project管道添加一个字段?

时间:2016-02-26 04:22:40

标签: mongodb aggregation-framework

我只想通过$project管道添加一个新字段,然后让其他属性进行进一步处理,我知道你可以这样做:

db.people.aggregate([
     {$project: {name: 1, address: 1, birth_month: {$month: "$birthdate"}}}
])

但是随着越来越复杂的文档,我很难在$project中编写20 ++字段名称。我是否可以通过聚合管道添加字段,以便我不必逐个指定其他字段,例如

db.people.aggregate([
     {$appendField: {birth_month: {$month: "$birthdate"}}}
])

1 个答案:

答案 0 :(得分:1)

最后,我能够解决这个问题。请阅读此处的旧帖子(MongoDB $project: Retain previous pipeline fields,感谢@Johnny HK)。这是我的解决方案(mongo 2.6或更高版本):

db.people.aggregate([
  {$project: {doc: "$$ROOT", birth_month: {$month: "$birthdate"}}}
  {$group: {_id: "$doc.gender"} } <-- here you can use fields of the original doc via $doc
])