我对正在处理的项目的汇总查询感到困惑。这大概是我的数据的样子
shop = {
_id: ObjectId('54265.....'),name: 'Shop 1',categories: ['856465....','2453435...','234543....']
}
categories = {
_id: ObjectId('856465.....'),name: 'Category 1',type_one: ['5423456....','234543....'],type_two: ['5423456....',}
type_one = {
_id: ObjectId('542345.....'),name: 'type 1'
}
type_two = {
_id: ObjectId('5423456.....'),name: 'type 2'
}
我正在寻找的预期输出是
{
_id: ObjectId('54265.....'),categoryData: [
{
_id: ObjectId('856465.....'),type_one: ['542345....',type_oneData: [
{
_id: ObjectId('542345.....'),name: 'type 1'
},.....
],type_twoData: [
{
_id: ObjectId('5423456.....'),name: 'type 2'
},.....
]
},.....
]
}
但是我现在可以得到的输出是
{
_id: ObjectId('54265.....'),categories: ['5423456....',categoryData:
{
type_oneData: [
{
_id: ObjectId('542345.....'),.....
]
}
}
我正在使用involues匹配,查找,展开...的mongodb查询...
shopData.aggregate(
[
{ "$match": { _id: uniqueId } },{
$lookup: {
from: "categories",localField: "categories",foreignField: "_id",as: "categoryData"
}
},{
$unwind: {
path: "$categoryData",preserveNullAndEmptyArrays: true
}
},{
$lookup: {
from: "typeone",localField: "categoryData.type_one",as: "categoryData.type_oneData"
}
},{
$unwind: {
path: "$categoryData.type_oneData",{
$lookup: {
from: "typetwo",localField: "categoryData.type_two",as: "categoryData.type_twoData"
}
},{
$unwind: {
path: "$categoryData.type_twoData",]
)
我无法遍历categoryData并收集信息,我的代码无法获取第一个对象的数据,而忽略了其余对象。我知道我错过了一些东西,但在过去的两天里我无法理解。 如何优化查询以获得所需的输出?任何帮助表示赞赏。