我想尝试根据文档中两个布尔字段的逻辑OR进行分组。基本上文档有两个字段可以表示错误条件,如果其中任何一个为真,那么我想创建一个id为true的状态字段,但如果两个都不是,那么我希望状态为false。我想在分组中使用它,因为我需要分别为错误而不是成功条件聚合数据。
我正在使用以下群组声明:
$group: {
_id: {
timestamp: {
$dateToString: {
format: "%Y-%m-%d %H:%M:%S.%LZ",
date: {
$subtract: ["$requestDtsCal", {
$mod: [{
$subtract: ["$requestDtsCal", baseDate]
}, divisor]
}]
}
}
},
serviceKey: "$serviceKey",
operationuuid: "$operationuuid",
contractKey: "$contractKey",
bindingTemplateKey: "$bindingTemplateKey",
containerKey: "$containerKey",
status: "$isSoapFaultByMP"
// status: { $or: [ {"$isSoapFaultByMP" : {$eq: true}}, {"$isSoapFaultByNextHop": {$eq: true}} ]}
},
如上所述,它汇总了很好的标识“isSoapFaultByMP”字段为true或false。如果我尝试使用带有逻辑OR的注释掉的变量,那么它将失败并显示以下消息:
assert: command failed: {
"ok" : 0,
"errmsg" : "invalid operator '$isSoapFaultByMP'",
"code" : 15999
}
对我做错了什么的想法,或者这是否可能?这是Mongo 3.2.11 BTW。
谢谢,
伊恩
答案 0 :(得分:0)
你可以试试这个,和你的_id字段一起,你不需要检查一个布尔是真还是假,只是评估它
db.col.aggregate(
[
{
$group : { _id : {
isError : { $or : ["$isSoapFaultByMP", "$isSoapFaultByNextHop"] }
}
}
}
]
)