我有一个文档的集合,如下所示: {
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], ...