如何在MONGODB WHERE条件中使用CASE语句
我是Mongo Db的新手,希望能在此查询中得到一些帮助如何在MONGODB WHERE条件中使用CASE语句,mongodb,mongoose,mongodb-query,Mongodb,Mongoose,Mongodb Query,我是Mongo Db的新手,希望能在此查询中得到一些帮助 DATA: { "_id" : ObjectId("5ba2442e9b75ee04d429ed34"), "RESOURCE_ID" : "100-101", "CITY_ID" : "200-1239", "EVENT" : "0" }, { "_id" : Obje
DATA:
{
"_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
"RESOURCE_ID" : "100-101",
"CITY_ID" : "200-1239",
"EVENT" : "0"
},
{
"_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
"RESOURCE_ID" : "100-101",
"CITY_ID" : "200-1239",
"EVENT" : "2"
},
{
"_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
"RESOURCE_ID" : "100-101",
"CITY_ID" : "200-1239",
"EVENT" : "3"
},{
"_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
"RESOURCE_ID" : "100-101",
"CITY_ID" : "800-1239",
"EVENT" : "1"
}
我使用匹配条件编写了以下聚合管道
“CITY_ID:“200-1239”和“RESOURCE_ID:“100-101”,但如何更改事件时的“1”然后是“I”(或)事件时的“2”然后是“U”(或)事件时的“3”然后是“D”(或)事件时的“0”然后是“V”任何人请建议我
db.COLLECTION.aggregate([{
{
$match:{
$and:[{"CITY_ID" : "200-1239","RESOURCE_ID" : "100-101"}]
}
},
])
预期产出:
{
"_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
"RESOURCE_ID" : "100-101",
"CITY_ID" : "200-1239",
"EVENT" : "V"
},
{
"_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
"RESOURCE_ID" : "100-101",
"CITY_ID" : "200-1239",
"EVENT" : "U"
},
{
"_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
"RESOURCE_ID" : "100-101",
"CITY_ID" : "200-1239",
"EVENT" : "D"
},{
"_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
"RESOURCE_ID" : "100-101",
"CITY_ID" : "200-1239",
"EVENT" : "I"
}
您可以在
$project
中使用$switch
db.COLLECTION.aggregate([
{
$match: {
$and: [{ "CITY_ID": "200-1239", "RESOURCE_ID": "100-101" }]
}
},
{
"$project": {
"RESOURCE_ID": 1,
"CITY_ID" : 1,
"EVENT": {
$switch: {
branches: [
{ case: { "$eq": ["$EVENT", "1"] }, then: "I" },
{ case: { "$eq": ["$EVENT", "2"] }, then: "U" },
{ case: { "$eq": ["$EVENT", "3"] }, then: "D" },
{ case: { "$eq": ["$EVENT", "0"] }, then: "V" }
],
default: "Z" //You can set default
}
}
}
} ])
参考链接:Hi IftekharDani我正在尝试此代码一些trow错误意外标记]@IftekharDani@Naresh请检查,我已经更新了我的答案。问题只是缺少括号。谢谢@IftekharDani,但如何删除默认值您也可以使用
default:$EVENT“
ok谢谢@IftekharDani