【问题标题】:Populate fields lookup of an obj array填充 obj 数组的字段查找
【发布时间】:2021-01-13 21:57:00
【问题描述】:

Element里面我有一个associations的数组,这些关联是一个集合。

这个集合是obj 由许多键组成,在这些键中有一些元素引用其他集合(objobj2)我想填充这两个集合。

但我无法理解它是如何做到的,甚至尝试做尽可能少的操作。

据我了解,您可能需要使用$unwind

元素:

{
_id: "",
element: "",
associations: [],
updatedAt: "",
createdAt: ""
}

协会:

{
_id: "",
code: "",
obj: "5s5s55s5d555dff", //populate - Schema.Types.ObjectId - ref: 'objGroup'
obj2: "5f5e5e5e5d5d5d5", //populate - Schema.Types.ObjectId - ref: 'obj2Group'
updatedAt: "",
createdAt: ""
}

在元素中:

aggregate.push({
    $lookup: {
      from: 'associations',
      let: { cId: '$_id' },
      pipeline: [
        { $match: { $expr: { $eq: ['$code', '$$cId'] } } },
        { $match: { $or: getTimeRange(from, to) } }
      ],
      as: 'associations'
    }
  })

【问题讨论】:

    标签: mongodb mongoose mongodb-query aggregation-framework mongoose-populate


    【解决方案1】:

    您可以在查找管道中使用嵌套查找,

    db.element.aggregate([
      {
        $lookup: {
          from: "associations",
          let: { cId: "$_id" },
          pipeline: [
            { $match: { $expr: { $eq: ["$code", "$$cId"] } } },
            { $match: { $or: getTimeRange(from, to) } },
            {
              $lookup: {
                from: "objCollection",
                localField: "obj",
                foreignField: "_id",
                as: "obj"
              }
            },
            { $unwind: "$obj" },
            {
              $lookup: {
                from: "obj2Collection",
                localField: "obj2",
                foreignField: "_id",
                as: "obj2"
              }
            },
            { $unwind: "$obj2" }
          ],
          as: "associations"
        }
      }
    ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多