2015-09-02 106 views
0

模式是:{title: '',作者: '',後: '' 評論說:[{作者: '',評論說: ''}]}

會不會有2 作者 s在新文檔中由於$ unwind:「$ comments」?如何給comments.author一個新的字段名稱?

回答

2

$unwind爲陣列中的每個元素輸出一個文檔。每個新文檔都將數組替換爲數組中的一個元素。在這種情況下,因爲它是嵌入文檔的數組,所以新字段的輸出將是嵌入文檔,名爲comments,並且字段爲authorcomments

所以不會有衝突,因爲author字段將被嵌入在comments字段中。

看到這種最簡單的方法就是親自試一試:

db.test.aggregate([{ $unwind : "$comments" }]); 

輸出:

{ 
    "_id" : ObjectId("55e76c41ca8a53ab3b4e827b"), 
    "title" : "", 
    "author" : "", 
    "post" : "", 
    "comments" : { "author" : "", "comments" : "" } 
} 

如果你確實想扁平化嵌入文檔,並重新命名字段,你想補充$project stage進入$unwind之後的聚合流水線。