【发布时间】:2018-01-20 13:03:05
【问题描述】:
我想尝试根据文档中两个布尔字段的逻辑 OR 进行分组。基本上,文档有两个可以表示错误条件的字段,如果其中一个为真,那么我想在 id 为真的情况下创建一个状态字段,但如果两个都不为真,那么我希望状态为假。我希望在分组中使用这个,因为我需要分别汇总错误而不是成功条件的数据。
我正在处理以下组声明:
$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”字段是真还是假。如果我尝试将注释掉的变体与逻辑 OR 一起使用,则会失败并显示以下消息:
assert: command failed: {
"ok" : 0,
"errmsg" : "invalid operator '$isSoapFaultByMP'",
"code" : 15999
}
对我做错了什么有什么想法,或者这是否可能?这是 Mongo 3.2.11 BTW。
谢谢,
伊恩
【问题讨论】:
标签: mongodb aggregation-framework