2016-12-02 47 views
0

突出的領域我有一個蒙戈查詢是這樣的:

aggregate([ 

     { "$match": {"postId":postId}}, 
     { 
     "$project": { 
     "f1":1, 
     "f2":1, 
     "f3":1, 
     "f4":1, 
     "_id":1, 
     "tempID" : { "$cond" : {<some condition>} } 
     } 
     }, 
     { 
     "$group": {"_id" : "$tempID","maxVal" : { "$max": "$f2" }} 
     }]) 

的問題是,我想查詢返回原來的文檔中的所有領域。我不得不改變上述查詢,但重點是一旦我到達$組,只有我指定的字段被投影。我讀過,我可以使用$ first操作符將這些字段包含在$ group階段。不過,我想知道是否有更好的方法來做到這一點?如果我不能使用另一個$項目,然後嵌套$組?

+1

在你的情況下,有沒有其他選擇,主要是因爲'$ group'階段內推動各個項目的數組。 – styvane

+0

好吧Styvane,感謝信息只是想知道這是正確的方式來做到這一點。乾杯 –

回答

1

你可以在一組的投影例如

aggregate([ 

    { "$match": {"postId":postId}}, 
    { 
    "$project": { 
    "f1":1, 
    "f2":1, 
    "f3":1, 
    "f4":1, 
    "_id":1, 
    "tempID" : { "$cond" : {<some condition>} } 
    } 
    }, 
    { 
    "$group": { 
     "_id" : "$tempID", 
     "maxVal" : { "$max": "$f2" } 
     "items": {$push: { 
    f1: "$f1", 
    f2: "$f2", 
    f3: "$f3", 
    f4: "$f4", 
    _id: "$_id"} 
    } 
    }]) 
+0

感謝凱文。雖然說實話我確實使用了第一種方法...... –