【问题标题】:MongoDB $lookup to replace only the ID in an array of objectsMongoDB $lookup 仅替换对象数组中的 ID
【发布时间】:2020-11-12 10:07:55
【问题描述】:

我在名为“Profile”的 mongodb 集合中保存了以下示例 JSON 对象

{
   name: "Test",
   relations: [
      { 
          personid: <MongoDB-ID>, 
          type: "Friend", 
          duration: 5 
      },
      { 
          personid: <MongoDB-ID>, 
          type: "Family", 
          duration: 9 
      },
   ]
}

我使用了 mongoose-Aggregate 函数,因为我需要根据保存的文档中的计算添加人工字段。在我的聚合结束时,我使用 $lookup-function 替换“relations”-array 内对象中的属性“personID”。

{
   $lookup:
     {
       from: PersonModel.collection.name,
       localField: 'relations.personid',
       foreignField: '_id',
       as: "relations.personid"
     }
} 

因为我希望将对象数组中的每个“人”替换为从特定人员文档填充的内容。 这不能按预期工作。 我还尝试在聚合函数返回的结果上调用“.populate()”,但也没有用。

【问题讨论】:

    标签: mongodb mongoose aggregate lookup


    【解决方案1】:

    不支持将localField 设置为relations.personidlocalField 要么需要 point to an array ,其中每个成员都用于连接,要么是普通值。解决这个问题的常用方法是先到$unwind,执行查找,然后在需要时返回$group

    【讨论】:

      猜你喜欢
      • 2021-03-10
      • 2020-11-08
      • 1970-01-01
      • 2020-08-18
      • 2023-04-10
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 2021-04-20
      相关资源
      最近更新 更多