在mongodb 4.4中,遇到一个奇怪的事情,在mongodb中使用 $convert 将一个double 值转换为 date 类型时,值为负数的时候存在onError未生效的情况
-202636829548800000 ,onError 未生效,
-39176725729017600000 ,onError 生效
尝试在$convert中使用 $ifNull,但是当先将字段查询处理,再对字段值 NaN 进行转换时又可以检测到$convert onNull 生效
遇到这种情况,应如何区处理这个 NaN 值
查询示例
aggregate([
{
"$addFields": {
"testNumber1_default": {
"$convert": {
"input": {
"$subtract": [
{
"$add": [NumberLong("1708617600000"),2*24*60*60000
]
},
{
"$multiply": [2345353453,24*60*60000]
}
]
},
"to": "date",
"onError": null,
"onNull": null,
}
},
"testNumber1_double": {
"$convert": {
"input": {
"$subtract": [
{
"$add": [Double("1708617600000"),2*24*60*60000
]
},
{
"$multiply": [2345353453,24*60*60000]
}
]
},
"to": "double",
"onError": null,
"onNull": null
}
},
"testNumber1_date": {
"$convert": {
"input": "$testNumber1_double",
"to": "date",
"onError": null,
"onNull": null
}
},
"testNumber2_double": {
"$convert": {
"input": {
"$subtract": [
{
"$add": [Double("1708617600000"),2*24*60*60000
]
},
{
"$multiply": [453434345345,24*60*60000]
}
]
},
"to": "double",
"onError": null,
"onNull": null
}
},
"testNumber2_date": {
"$convert": {
"input": "$testNumber2_double",
"to": "date",
"onError": null,
"onNull": null
}
}
}
},
{
"$project":{
"testNumber1_default":1,
"testNumber1_double":1,
"testNumber1_date":1,
"testNumber2_double":1,
"testNumber2_date":1,
}
},
{
"$skip": 0
},
{
"$limit": 1
}
])查询结果
转换失败,类型还是doublem,而非null或date