MongoDB添加字段取决于名称?
Posted
技术标签:
【中文标题】MongoDB添加字段取决于名称?【英文标题】:MongoDB Add Fields Depends on Name? 【发布时间】:2022-01-20 17:18:09 【问题描述】:db.getCollection("user").aggregate([
$match : fname : "test1" ,
$addFields: email_address : "test1@gmail.com" ,
$match : fname : "test2" ,
$addFields: email_address : "test2@gmail.com"
])
我只想添加电子邮件地址取决于 fname 值。 此代码仅在没有 test2 时才有效,因此只有效一次但不要重复。 有什么方法可以重复匹配和添加字段?
【问题讨论】:
【参考方案1】:您可以使用$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 playground 供您参考。
【讨论】:
【参考方案2】:在一般情况下(如果适用的话):
db.getCollection("user").aggregate([
$addFields: email_address : $concat: ["$fname", "@gmail.com"]
])
【讨论】:
以上是关于MongoDB添加字段取决于名称?的主要内容,如果未能解决你的问题,请参考以下文章
使用mongodb和mongoose(nodejs)的不同字段名称映射多个数据源