gpt4 book ai didi

mongodb - $concat mongodb 中的两个字段

转载 作者:行者123 更新时间:2023-12-04 15:54:32 27 4
gpt4 key购买 nike

我有这两个集合:

employees :  {_id: NumberInt(0), name:"Max",surname:"Power"}, ..

loggableUser:{_id: NumberInt(0), employee: NumberInt(1), ..},

现在我必须在以下查询中插入一个包含“employee.name”+“”+“employee.surname”的字段“fullName”。我试过这个查询:

db.loggableUser.aggregate([
{
'$lookup':
{
'from': 'employees',
'localField': 'employee',
'foreignField' : '_id',
'as': 'employee'
}
},
{ "$addFields":{
"$employee.fullName" : "$employee.name" + " " + "$employee.surname"}])

但它不起作用。我知道这是一件简单的事情,但我无法让它发挥作用。谢谢。

最佳答案

你需要先$unwind employee 然后你可以使用 $concat合并两个字段。

db.loggableUser.aggregate([
{ '$lookup': {
'from': 'employees',
'localField': 'employee',
'foreignField' : '_id',
'as': 'employee'
}},
{ '$unwind': '$employee' },
{ '$addFields': {
'employee.fullName' : { '$concat': ['$employee.name', ' ', '$employee.surname'] }
}}
])

使用 mongodb 3.6 及更高版本要容易得多 $lookup语法。

db.loggableUser.aggregate([
{ '$lookup': {
'from': 'employees',
'let': { 'employee': '$employee' },
'pipeline': [
{ '$match': { '$expr': { '$eq': ['$_id', '$$employee'] }}},
{ '$addFields': { 'fullName' : { '$concat': ['$name', ' ', '$surname'] }}}
]
'as': 'employee'
}}
])

关于mongodb - $concat mongodb 中的两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52326901/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com