我正在执行一个猫鼬聚合,首先在一个字段上运行$ lookup,然后在查找记录中的两个字段上运行$ lookup。
子文档的这两个$ lookups中的每一个在它们都是第一个时都有效,但是第二个返回空数组。由于更改顺序可以使任何一个先工作都可以,所以我知道我的数据是正确的,并且$ lookup中的语法是正确的。有其他方法吗?
简单的例子:
Parent.aggregate([
{
$lookup: {
from: 'children',
localField: 'child',
foreignField: '_id,
as: 'child'
},
},
{
$lookup: {
from: 'colors',
localField: 'child.color',
foreignField: '_id,
as: 'child.color'
},
},
{
$lookup: {
from: 'sizes',
localField: 'child.size',
foreignField: '_id,
as: 'child.size'
}
},
]);
// populates 'color' document if color $lookup is first, populated 'size' document if $size is first