[英]Mongodb Aggregation Group by logical or?
我想嘗試基於文檔中兩個布爾字段的邏輯或進行分組。 基本上,文檔有兩個字段可以表示錯誤情況,並且如果其中一個為true,那么我想在id為true的情況下創建一個status字段,但是如果兩個都不為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。 如果我嘗試將帶注釋的變體與邏輯或一起使用,則此消息將失敗:
assert: command failed: {
"ok" : 0,
"errmsg" : "invalid operator '$isSoapFaultByMP'",
"code" : 15999
}
對我在做什么錯有什么想法,或者甚至有可能嗎? 這是Mongo 3.2.11 BTW。
謝謝,
伊恩
您可以嘗試一下嗎,連同_id字段一起使用,無需檢查布爾值是對還是錯,只需對其進行評估
db.col.aggregate(
[
{
$group : { _id : {
isError : { $or : ["$isSoapFaultByMP", "$isSoapFaultByNextHop"] }
}
}
}
]
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.