我是Mongo Db的新手,希望对此查询有所帮助。
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'(或)事件当任何人都建议我时,如果“ 0”然后“ V”,那么“ 3”然后是“ D”(或)事件。
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"
}
答案 0 :(得分:1)
您可以在$switch
中使用$project
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
}
}
}
} ])