Database MongoDB对条件的严格评估

Database MongoDB对条件的严格评估,database,mongodb,nosql,Database,Mongodb,Nosql,我想知道我是否做错了什么,或者MongoDB确实严格地评估了$cond操作符的两个分支。请参见以下示例: db.collection.aggregate( [ { "$project":{ "condition":{ "$cond":{ "if": true, "then":{ "$literal":"NaN"

我想知道我是否做错了什么,或者MongoDB确实严格地评估了
$cond
操作符的两个分支。请参见以下示例:

db.collection.aggregate(
[  
   {  
      "$project":{ 
         "condition":{  
            "$cond":{  
               "if": true,
               "then":{  
                  "$literal":"NaN"
               },
               "else":{  
                  "$divide":[  
                     {  
                        "$literal":0.0
                     },
                     {  
                        "$literal":0.0
                     }
                  ]
               }
            }
         }
      }
   }
]

)
在我看来,这个聚合应该返回
NaN
(对于每个匹配的文档),但是我得到的是零误差除法。为什么条件的
else
分支会被评估,而
则会返回
条件


只有将两个
$literal
除以,如果其中一个操作数是列引用,即使列的计算结果为
0
,也会发生这种情况。

首先,不需要使用
$literal

db.collection.aggregate(
[  
   {  
      "$project":{ 
         "condition":{  
            "$cond":{  
               "if": true,
               "then": "NaN",
               "else":{ "$divide":[ 0.0, 0.0] }
            }
         }
      }
   }
]

)
做完全相同的事情


现在谈谈错误
“$divide”:[0.0,0.0]
有两个常量,在客户端运行查询之前计算,这似乎是合理的优化。

好的,谢谢,我只需要知道这些。我不喜欢,但至少我知道我对此无能为力。