您可以将以下聚合与 MongoDB 3.6及更高版本一起使用
db.GroupPeople.aggregate([
{ "$addFields": { "categories": { "$objectToArray": "$categories" }}},
{ "$unwind": "$categories" },
{ "$lookup": {
"from": "Category",
"let": { "category": "$categories.k" },
"pipeline": [
{ "$match": { "$expr": { "$eq": ["$$category", "$code"] }}}
],
"as": "category"
}},
{ "$unwind": "$category" },
{ "$group": {
"_id": "$_id",
"categories": {
"$push": {
"k": "$category.name",
"v": "$categories.v"
}
}
}},
{ "$project": {
"categories": {
"$arrayToObject": "$categories"
}
}}
])
以及3.4.4及以上版本
db.GroupPeople.aggregate([
{ "$addFields": { "categories": { "$objectToArray": "$categories" }}},
{ "$unwind": "$categories" },
{ "$lookup": {
"from": "Category",
"localField": "categories.k",
"foreignField": "code",
"as": "category"
}},
{ "$unwind": "$category" },
{ "$group": {
"_id": "$_id",
"categories": {
"$push": {
"k": "$category.name",
"v": "$categories.v"
}
}
}},
{ "$project": {
"categories": {
"$arrayToObject": "$categories"
}
}}
])
Mongo游乐场