我的聚合管道中有以下文档:
[
{
"email" : "email@example.com",
"name" : "Organization Name",
"users" : [
{
"lastName" : "Nye",
"firstName" : "Bill",
"email" : "bnye@example.com"
},
{
"lastName" : "Rogers",
"firstName" : "Mr.",
"email" : "mrrogers@example.com"
}
]
},
...
]
使用$project
我想$concat
每个数组子文档中的firstName
和lastName
字段,以获得以下结果:
{
"email" : "email@example.com",
"name" : "Organization Name",
"users" : [
{
"name" : "Bill Nye",
"email" : "bnye@example.com"
},
{
"name" : "Mr. Rogers",
"email" : "mrrogers@example.com"
}
]
}
我尝试过以下聚合:
db.organizations.aggregate([
{
$project: {
email : 1,
name : 1,
users : {
name : { $concat : [ "$users.firstName", " ", "$users.lastName" ] },
email : 1
}
}
}
]);
...但我收到以下错误:
$ concat只支持字符串,而不支持Array
我也尝试过以下聚合:
db.organizations.aggregate([
{
$project: {
email : 1,
name : 1,
users : {
name : { $concat : [ "$firstName", " ", "$lastName" ] },
email : 1
}
}
}
]);
...但name
始终返回null
。
我觉得这应该是一个相对简单的事情,但是,我完全被难倒了。
如何获得我正在寻找的结果?
答案 0 :(得分:10)