1

的表達式中使用變量的值我試圖按兩個字段對文檔進行分組,field1field2

myCollection.aggregate([{ 
    $group: { 
    _id: { 
     group1: "$field1", 
     group2: "$field2" 
    }, 
    count: { 
     $sum: 1 
    } 
    } 
}]) 

哪些工作正常,產生預期的結果。

但我想重新運行上面的循環,每次運行將有不同的$field2,所以下面是失敗,我該怎麼做呢?由於

const field3 = 'someValue'; // <<--- will change in every loop run --- 

myCollection.aggregate([{ 
    $group: { 
    _id: { 
     group1: "$field1", 
     group2: "$$field3" //<<---------------- 
    }, 
    count: { 
     $sum: 1 
    } 
    } 
}]) 

回答

1

以下應該工作,你

var field3 = 'someValue'; 
myCollection.aggregate([{ 
    $group: { 
    _id: { 
     group1: "$field1", 
     group2: "$" + field3, 
    }, 
    count: { 
     $sum: 1 
    } 
    } 
}])