我想用逗号分隔值。那么如何在聚合框架中使用group / concat?
文件联络人
{
"_id" : "9c612c95054fb46e3de8dee8",
"name" : "name1",
"oppID" : [
"5c612c95054fb46e3de8bcc5",
"5bd6b334cba7d2241a3ba9d9"
]
},
{
"_id" : "1c612c95054fb46e3de8dcde9",
"name" : "name2",
"oppID" : [
"5c612c95054fb46e3de8bcc5",
"5bd6b334cba7d2241a3ba9d9"
]
}
文件机会
{
"_id" : "5c612c95054fb46e3de8bcc5",
"name" : "opp name 01",
},
{
"_id" : "5bd6b334cba7d2241a3ba9d9",
"name" : "opp name 02",
},
我想获得如下的联系人列表,
{
"_id" : "9c612c95054fb46e3de8dee8",
"oppName" : "opp name 01, opp name 02"
},
{
"_id" : "1c612c95054fb46e3de8dcde9",
"oppName" : "opp name 01, opp name 02"
}
您需要运行$ lookup来从两个集合中获取数据,然后使用$ reduce与$ concat来将数组转换为单个字符串
db.contact.aggregate([
{
$lookup: {
from: "opportunity",
localField: "oppID",
foreignField: "_id",
as: "opportunities"
}
},
{
$project: {
_id: 1,
oppName: {
$reduce: {
input: "$opportunities",
initialValue: "",
in: {
$cond: [ { $eq: [ "$$value", "" ] }, "$$this.name", { $concat: [ "$$value", ", ", "$$this.name" ] } ]
}
}
}
}
}
])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句