MongoDB添加字段取决于名称


db.getCollection("user").aggregate([
{ $match : { fname : "test1" } },
{ $addFields: { email_address : "test1@gmail.com" } },
{ $match : { fname : "test2" } },
{ $addFields: { email_address : "test2@gmail.com" } }
])

我只想添加电子邮件地址取决于fname值。这段代码只有在没有test2的情况下才能工作,所以只工作一次,但不要重复。有什么方法可以重复match和addfields吗?

您可以将$switch用于您的案例。

db.collection.aggregate([
{
"$addFields": {
"email_address": {
"$switch": {
"branches": [
{
"case": {
$eq: [
"$fname",
"test1"
]
},
"then": "test1@gmail.com"
},
{
"case": {
$eq: [
"$fname",
"test2"
]
},
"then": "test2@gmail.com"
}
]
}
}
}
}
])

这是Mongo游乐场供您参考。

在广义情况下(如果适用(:

db.getCollection("user").aggregate([
{ $addFields: { email_address : {$concat: ["$fname", "@gmail.com"]} }}
])

最新更新