【发布时间】:2017-03-29 20:24:56
【问题描述】:
假设我有 3 个集合,cars、bikes、vehicles。
cars收藏为:
{
{
"_id": "car1",
"carBrand": "Audi",
"color": "blue"
},
{
"_id": "car2",
"carBrand": "BMW",
"color": "white"
}
}
bikes收藏为:
{
{
"_id": "bike1",
"bikeBrand": "Audi",
"color": "red"
},
{
"_id": "bike2",
"carBrand": "BMW",
"color": "white"
}
}
和 vehicles 集合实际上只是引用了cars 和bikes 集合作为
{
{
"_id": "vehicle1",
"vehicleType": "cars",
"vehicleId": "car1"
},
{
"_id": "vehicle2",
"vehicleType": "cars",
"vehicleId": "car2"
},
{
"_id": "vehicle3",
"vehicleType": "bikes",
"vehicleId": "bike1"
},
{
"_id": "vehicle4",
"vehicleType": "bikes",
"vehicleId": "bike2"
},
}
我想与cars 和bikes 集合一起加入vehicles 集合。我试图将"$vehicleType" 设置为$lookup 的from 字段的变量。但是它并没有像我预期的那样工作。它根本不加入表格。没有错误。
db.collection.aggregate([{
$lookup: {
from: "$vehicleType",
localField: "vehicleId",
foreignField: "_id",
as: "vehicleDetails"
}
}]);
我期待有这样的结果
{
{
"_id": "vehicle1",
"vehicleType": "cars",
"vehicleId": "car1",
"vehicleDetails": {
"_id": "car1",
"carBrand": "Audi",
"color": ""
}
},
{
"_id": "vehicle2",
"vehicleType": "cars",
"vehicleId": "car2",
"vehicleDetails": {
"_id": "car2",
"carBrand": "BMW",
"color": "white"
},
{
"_id": "vehicle3",
"vehicleType": "bikes",
"vehicleId": "bike1",
"vehicleDetails": {
"_id": "bike1",
"bikeBrand": "Audi",
"color": "red"
}
},
{
"_id": "vehicle4",
"vehicleType": "bikes",
"vehicleId": "bike2",
"vehicleDetails": {
"_id": "bike2",
"carBrand": "BMW",
"color": "white"
}
},
}
【问题讨论】:
标签: mongodb aggregation-framework