我创建了一个聚合管道,其执行以下操作:把整个原始文件在一个新的属性名称
- 转到自定义收集和_id
- 去找到默认的收集,并通过ID查找,将其附加由ID为默认
- 转到风格的收集和发现,重视它作为风格
代码:
Custom.aggregate([{
$match: {
'_id': mongoose.Types.ObjectId(req.params.id)
}
},
{
$lookup: {
from: 'styles',
localField: 'styleId',
foreignField: 'id',
as: 'style'
}
},
{
$unwind: '$style'
},
{
$lookup: {
from: 'default',
localField: 'styleId',
foreignField: 'id',
as: 'default'
}
},
{
$unwind: '$default'
},
]).then(docs => res.json(docs))
}
这是电流输出:
{
"_id": "597774cc09064e2e4e9fedb7",
"updatedAt": "2017-07-25T16:41:48.823Z",
"createdAt": "2017-07-25T16:41:48.823Z",
"styleId": "401648805",
"colorId": null,
"selectedOption": null,
"deselectedOption": null,
"currentOptions": [],
"requiredItems": [],
"includedItems": [],
"furtherRemovals": [],
"furtherAdditions": [],
"excludedItems": [],
"name": [],
"__v": 0,
"style": {
"_id": "5902276effabb8bd2926be71",
"id": "401648805",
"name": "Luxury 4dr Sedan (2.0L 4cyl Turbo 8A)",
"createdAt": "2017-07-26T15:28:36.778Z",
"updatedAt": "2017-07-26T15:49:14.366Z"
},
"default": {
"_id": "5978bfef32d246877e9cb363",
"updatedAt": "2017-07-26T16:14:39.779Z",
"createdAt": "2017-07-26T16:14:39.779Z",
"id": "401648805",
"requiredItems": [],
"includedItems": [],
"furtherRemovals": [],
"furtherAdditions": [],
"excludedItems": [],
"__v": 0
}
}
我试图总结我的自定义对象在“自定义”命名对象,它更好地满足我们的数据结构:
{
"custom": {
"_id": "597774cc09064e2e4e9fedb7",
"updatedAt": "2017-07-25T16:41:48.823Z",
"createdAt": "2017-07-25T16:41:48.823Z",
"styleId": "401648805",
"colorId": null,
"selectedOption": null,
"deselectedOption": null,
"currentOptions": [],
"requiredItems": [],
"includedItems": [],
"furtherRemovals": [],
"furtherAdditions": [],
"excludedItems": [],
"name": [],
"__v": 0,
},
"style": {
"_id": "5902276effabb8bd2926be71",
"id": "401648805",
"name": "Luxury 4dr Sedan (2.0L 4cyl Turbo 8A)",
"createdAt": "2017-07-26T15:28:36.778Z",
"updatedAt": "2017-07-26T15:49:14.366Z"
},
"default": {
"_id": "5978bfef32d246877e9cb363",
"updatedAt": "2017-07-26T16:14:39.779Z",
"createdAt": "2017-07-26T16:14:39.779Z",
"id": "401648805",
"requiredItems": [],
"includedItems": [],
"furtherRemovals": [],
"furtherAdditions": [],
"excludedItems": [],
"__v": 0
}
}
我认为这与聚合管道中的$group
有关,但我不确定如何构建它。任何帮助将不胜感激 - 相对较新的MonogoDB /猫鼬。
这种方法比我建议的更好,更简单。 –
这个伎俩! – Moshe