loopkup mongodb之后条件的多个匹配项

问题描述 投票:0回答:1
db.setting.aggregate([
  {
    $match: {
      status: true,
      deleted_at: 0,
      _id: {
        $in: ids
      }
    }
  },
  {
    $lookup: {
      from: "admin",
      localField: "_id",
      foreignField: "admin_id",
      as: "data"
    }
  },
  {
    $match: {
      "data.createdAt": {
        $gte: new Date("2020-01-01")
      }
    }
  },

])

我得到一个值,但甚至期望多个数据大于等于2020年1月1日。如何解决它,请指导谢谢

mongodb aggregation-framework
1个回答
0
投票

您必须在查找后平移结果才能执行$match

db.setting.aggregate([
  {
    $match: {
      status: true,
      deleted_at: 0,
      _id: {
        $in: ids
      }
    }
  },
  {
    $lookup: {
      from: "admin",
      localField: "_id",
      foreignField: "admin_id",
      as: "data"
    }
  },
  { $unwind: "$data"}
  {
    $match: {
      "data.createdAt": {
        $gte: new Date("2020-01-01")
      }
    }
  },
  {
    $group: {
        _id: "$_id",
        status: { "$first": "$status" },
        deleted_at: { "$first": "$deleted_at" }, //You can project more 
        data: { "$push": "$data" }
    }
  }
])
© www.soinside.com 2019 - 2024. All rights reserved.