我只想通过$project
管道添加一个新字段,然后让其他属性进行进一步处理,我知道你可以这样做:
db.people.aggregate([
{$project: {name: 1, address: 1, birth_month: {$month: "$birthdate"}}}
])
但是随着越来越复杂的文档,我很难在$project
中编写20 ++字段名称。我是否可以通过聚合管道添加字段,以便我不必逐个指定其他字段,例如
db.people.aggregate([
{$appendField: {birth_month: {$month: "$birthdate"}}}
])
答案 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
])