簡體   English   中英

按邏輯還是Mongodb聚合組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM