我有一個文檔的集合,如下所示: {
ipAddr: '1.2.3.4',
"results" : [
{
"Test" : "Sight",
"Score" : "FAIL",
"Reason" : "S1002"
},
{
"Test" : "Speed",
"Score" : "FAIL",
"Reason" : "85"
},
{
"Test" : "Sound",
"Score" : "FAIL",
"Reason" : "A1001"
}
],
"finalGrade" : "FAILED"
}
這裏是聚集查詢我試着寫,我想do(請參見注釋掉的部分)是爲每個ipAddr創建一個 「原因/錯誤」代碼的分組字段,但前提是原因代碼以特定字母開頭,並且只添加一次代碼,我試過如下:
db.aggregate([
{$group:
{ _id: "$ipAddr",
attempts: {$sum:1},
results: {$push: "$finalGrade"},
// errorCodes: {$addToSet: {$cond: ["$results.Reason": /[A|B|S|N.*/, "$results.Reason", ""]}},
finalResult: {$last: "$finalGrade"} }
}
]);
一切正常,不包括註釋掉的'errorCodes'一行。我試圖創建的邏輯是: 「添加errorCodes設置結果的值。原因碼如果它以A,B,S或N開頭,否則不需要添加任何內容」。
爲了記錄上述情況,ErrorCode的設置應包含:
... ErrorCode的:S1002,A1001], ...