2016-02-26 88 views
1

我只是想通過$project管道添加一個新的領域,讓其他屬性進行進一步的處理漏網之魚,我知道,你可以這樣做:

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

但隨着越來越多的複雜的文檔,我有在$project中編寫20 ++字段名稱非常困難。我可以再補充通過匯聚管道中的場,使得我沒有一個有規定的其他領域的一個辦法,像

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

在這種情況下,不添加超過20場,而投入項目,你不想那場{$項目:{名稱:0}}在這種情況下,將選擇除名字外的所有字段。 –

+0

我認爲你誤解了,我想保留原始文檔的所有字段完好無損,但是增加了一個字段(birth_month) – DennyHiu

+0

....並且不必在$ project中寫下其他字段名稱 – DennyHiu

回答

1

最後,我能解決這個問題。剛剛閱讀這裏的舊帖子(MongoDB $project: Retain previous pipeline fields,感謝@Johnny HK)。這裏是我的解決方案(蒙戈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 
]) 
相關問題