2017-04-15 114 views
0

子文檔的屬性分配給父我有一個聚集的是,現在,返回一個對象看起來像:的MongoDB如何在總

"_id": ObjectId("58f15197315e16762fbd2f0d"), 
"versionCount": 3, 
"article": { 
    "_id": ObjectId("58f152ecd549c4783a84f844"), 
    "otherProps": "etc..." 
} 

我已經通過相當多的聚合步驟獲得了在這裏。 article下有很多屬性。問題是,我想讓它返回versionCount屬性的文章。我可以做一個$project並單獨將每個屬性分配給父文檔,但這需要很多行代碼並且相對較脆弱。是否有更有效的方法從article中獲取所有屬性並將它們分配給聚合返回的文檔?

+0

什麼是你的mongo服務器版本? – Veeram

+0

Mongo版本3.2.12 – Corbfon

+0

恐怕您必須手動爲該版本映射它們。 – Veeram

回答

2

您可以使用$addFields將頂級字段添加到子文檔中,並使用$replaceRoot將子文檔升級到頂層。

db.collection.aggregate({ 
    $addFields: { 
     "article.doc_id":"$_id", 
     "article.versionCount": "$versionCount" 
    } 
}, { 
    $replaceRoot: { 
     newRoot: "$article" 
    } 
})