Mongodb Mongo怎么写一个案例呢

Mongodb Mongo怎么写一个案例呢,mongodb,aggregation-framework,coalesce,Mongodb,Aggregation Framework,Coalesce,我正在尝试将以下sql转换为mongo: SELECT CASE WHEN COL_A IS NOT NULL THEN 'aaa' ELSE 'bbb' END AS FLAG, COL_B AS VALUE FROM MY_TABLE --- or, at least SELECT coalesce(COL_A,'bbb') AS FLAG, COL_B AS VALUE FROM MY_TABLE 在mongo,我在这里: db.getCollection('MyTable').a

我正在尝试将以下sql转换为mongo:

SELECT CASE WHEN COL_A IS NOT NULL THEN 'aaa' ELSE 'bbb' END AS FLAG, COL_B AS VALUE
FROM MY_TABLE

--- or, at least
SELECT coalesce(COL_A,'bbb') AS FLAG, COL_B AS VALUE
FROM MY_TABLE


在mongo,我在这里:

db.getCollection('MyTable').aggregate([
{
$项目:
{ 
“_id”:0,
“旗帜”:{
$switch:{
分行:[
{case:{“$colu_A”:{$exists:true}然后:“aaa”}
],
默认值:“bbb”
}
}, 
“值”:“$colu_B”
}
}, 
{
限额:50元
}
])
但它告诉我意外的标识符

编辑:

使用
$ifNull
测试:我得到一个空数组作为输出,而不是预期的“bbb”

db.getCollection('MyTable').aggregate([
{
$项目:
{ 
“_id”:0,
“标志:{$ifNull:[“$colu_A”,“bbb”]},
“值”:“$colu_B”
}
}, 
{
限额:50元
}
])
要检查该值是否不存在或为null,请使用
{$lte:[“$field”,null]}


谢谢:但我得到了“errmsg”:“无法识别的表达式”$COL\u A”,“代码”:168,“代码名”:“InvalidPipelineOperator”
$exists
不是聚合运算符。您可能必须改用
ifNull
聚合运算符。
$colu_A
看起来如何?它应该是一个空数组吗?是否要针对空数组而不是空数组进行测试?$COL_A应该是字符串,但可能不存在。我正在添加一些BSON记录
/*sample json data*/
[
 { COL_A: "abc",
   COL_B: "123"
},{
 COL_B: "654"
},
{
COL_A: "zyx",
COL_B: "987"
}

]


/*expected_output*/
{
FLAG: "aaa", /*OR , at least, "abc"*/
VALUE: "123"
},{
FLAG: "bbb", 
VALUE: "654"
},{
FLAG: "aaa", /*or, at least, "zyx"*/
VALUE: "987"
}


db.collection.aggregate([
  {
    $project: {
      "_id": 0,
      "FLAG": {
        $cond: [
          {
            $lte: [
              "$COL_A",
              null
            ]
          },
          "bbb",
          "aaa"
        ]
      },
      "VALUE": "$COL_B"
    }
  },
  {
    $limit: 50
  }
])