2016-06-28 200 views
3

的不同的結果我有這樣的查詢:MongoDB的聚合

db.collection.aggregate([ 
    { 
    $group: { 
     _id: "$PATIENT_ID", 
     MASS: { $max: "$max_field" } 
    } 
    } 
]); 

這個查詢的結果是:

{ "_id" : "TCGA-A2-A0YD", "mass" : 0.994683301742671 } 
{ "_id" : "TCGA-A2-A3XX", "mass" : 0.993455527786917 } 

我有這樣的第二查詢:

db.collection.aggregate([ 
    { 
    $group: { 
     _id: "TCGA-A2-A3XX", 
     MASS: { $max: "$max_field" } 
    } 
    } 
]); 

的結果第二個查詢是:

{ "_id" : "TCGA-A2-A3XX", "mass" : 0.994683301742671 } 

爲什麼? 我期待另一個值這個ID TCGA-A2-A3XX

回答

3

你的問題是,你是通過不斷"TCGA-A2-A3XX"把所有文件,因此你會得到一個組與ID,並從所有文檔計算最大的領域。
我想你想添加一個$match階段到你的管道來篩選你的特定患者。

db.collection.aggregate([ 
    { 
    $match: { 
     PATIENT_ID: "TCGA-A2-A3XX" 
    } 
    }, 
    { 
    $group: { 
     _id: "$PATIENT_ID", 
     MASS: { $max: "$max_field" } 
    } 
    } 
]); 
+0

感謝您的回答。我不知道爲什麼在第一種情況下我獲得了:TCGA-A2-A3XX,0.993455527786917,在第二種情況下,我獲得了TCGA-A2-A3XX 0.994683301742671 – mydb

+2

因爲在第一種情況下,您使用「$ PATIENT_ID」 'field「PATIENT_ID」,因此您按該字段的值進行分組。在另一種情況下,您將按常數進行分組,這將始終導致一個組。 – DAXaholic

+0

好的,但TCGA-A2-A3XX是PATIENT_ID字段的一個值 – mydb