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

Posted

技术标签:

【中文标题】如何在 mongodb 中使用 $lookup 从该表中获取与另一个表连接的数据【英文标题】:How to use $lookup in mongodb to get data from this table that joins with another table 【发布时间】:2019-11-21 12:31:34 【问题描述】:

我有以下两种方案:

方案贴:

让架构 =

id:“帖子”,

属性:

内容:类型:“字符串”,默认:'',

作者:

类型:“对象”,

id: type: "object" ,

头像:类型:“字符串”,

名字:类型:“字符串”,

姓氏:类型:“字符串”,

状态:类型:“字符串”

,

标签: type: 'string' ,

类别:

类型:“对象”,

id: type: "object" ,

名称:类型:“字符串”

,

图片:

类型:“数组”,

项目:

类型:“对象”,

属性:

filePath: type: "string" ,

排序:类型:'字符串',

,

;


方案报告:

让架构 =

id:“报告”,

属性:

记者:

类型:“对象”,

userId: type: "object" ,

名字:类型:“字符串”,

姓氏:类型:“字符串”,

状态:类型:“字符串”

,

到:

类型:“对象”,

id: type: "object", ref: 'post' ,

类型对象:类型:“字符串”

,

reportType: type: "string" , //SPAM||FAKE ..

内容:类型:“字符串”

enter image description here

如何使用 $lookup 或 $populate 从表中获取数据 post 以便: 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】:

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

【讨论】:

localField:"_id": ObjectId, foreignField:"to.id": + to: Object, + id: ObjectId 我还是没有返回正确的结果 您能否提供两个集合中的至少一个样本记录,以便我进一步开展工作

以上是关于如何在 mongodb 中使用 $lookup 从该表中获取与另一个表连接的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mongodb 中应用 $lookup 条件?

如何在 Node.js 中高效/快速地执行数组连接,类似于 MongoDB $lookup?

如何使用 MongoDB 聚合 `$lookup` 作为 `findOne()`

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

如何在 mongoDB 的第二级实现`lookup`? [复制]

如何在 mongoDB 的第二级实现`lookup`? [复制]