如何在mongodb中使用$ lookup从与另一个表联接的表中获取数据

时间:2019-07-11 18:10:21

标签: node.js mongodb mongoose mongoose-schema

我有以下两种方案:

计划帖子:

let schema = {

id:“帖子”,

属性:{

内容:{类型:“字符串”,默认值:“},

作者:{

类型:“对象”,

id:{类型:“对象”},

头像:{type:“ string”},

名字:{type:“ string”},

lastName:{类型:“字符串”},

状态:{类型:“字符串”}

},

标签:{type:'string'},

类别:{

类型:“对象”,

id:{类型:“对象”},

名称:{类型:“字符串”}

},

图片:{

类型:“数组”,

项目:{

类型:“对象”,

属性:{

filePath:{类型:“字符串”},

排序:{type:'string'},

}

}

},

};


方案报告:

let schema = {

id:“报告”,

属性:{

记者:{

类型:“对象”,

userId:{类型:“对象”},

名字:{type:“ string”},

lastName:{类型:“字符串”},

状态:{类型:“字符串”}

},

收件人:{

类型:“对象”,

id:{类型:“对象”,编号:“ post”},

typeObject:{类型:“字符串”}

},

reportType:{类型:“字符串”},// SPAM || FAKE ..

内容:{类型:“字符串”}

}

enter image description here

如何使用$查找或$填充从表发布中获取数据,以便:post._id = report.to.id 我这样写,它会按要求返回错误:

findPromise = model.aggregate([

    { $lookup:{from:"reports",localField:"_id", foreignField:"to.id", as:"res"}},
    {
      $match: query,
    },
    { $skip: skip },
    { $limit: pageSize * 1 },

  ])

请帮助我, 谢谢大家。

1 个答案:

答案 0 :(得分:0)

您的查询正确,只需确保外部字段和本地字段的 typeof 相同即可。