您好,这几天我一直被这个问题难住了.由于我工作的地方的mongo非常过时,我不能使用Switch语句,因为我们的版本不支持它.我正在try 使用嵌套的if/Else完成我的任务.判断了第一个条件,设置了第二个myField2,但内部的if/Else条件都不起作用.我不知道这件事我做错了什么.
db.getCollection("MyCollection").updateMany({
//SOME CONDITIONS CHECKED HERE
},
[{
"$set":{
"myTs":{
"$cond":{
"if":{
"$and": [
{"myField1" : "value1"},
{"myField2": "value2"},
]
},
"then":"$ThisTs",
"else": {
"$cond":{
"if":{
"myField2": "value3"
},
"then":"$lastUpdatedTs",
"else":{
"$cond":{
"if":{
"$and": [
{"myField1" : "value4"},
{"$ne": ["$myField3.aTs", null]},
{"$ne": ["$myField3.aTs", "0"]},
{"$eq": ["$myField3.aBool", false]},
]
},
"then":"$myField3.aTs2",
"else":{
"$cond":{
"if":{
"$and": [
{"myField1" : "value2"},
{"myField2" : "value1"},
{"$or": [
{"$eq": ["$myField3.aTs", null]},
{"$eq": ["$myField3.aTs", "0"]},
{"$eq": ["$myField3.aBool", false]},
]
},
]
},
"then":"$myField3.aTs",
"else": "$lastTs",
}
}
}
}
}
}
}
},
"myField2":{
"$cond":{
"if":{
"$and": [
{"myField1" : "value2"},
{"$ne": ["$myField3.aTs", null]},
{"$ne": ["$myField3.aTs", "0"]},
{"$eq": ["$myField3.aBool", false]},
]
},
"then":"FINISHED",
"else": "$myField2"
}
}
}
}], {multi: true}
)
我对这件事有点反感.有什么正确方向的指示吗?我在嵌套的if/Else上找不到太多信息.