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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了loopkup mongodb之后条件的多个匹配项相关的知识,希望对你有一定的参考价值。

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日。如何解决它,请指导谢谢

答案

您必须在查找后平移结果才能执行$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" }
    }
  }
])

以上是关于loopkup mongodb之后条件的多个匹配项的主要内容,如果未能解决你的问题,请参考以下文章

mongodb通过多个数组项查找

将 INDEX/MATCH 与多个条件和多个匹配项连接起来

使用SpringMVC + MongoDB时,用or条件匹配关键字时遇到的问题?

Mongodb条件查询Query的用法

查找重叠子串的多个匹配项

Apache Pig - 具有多个匹配条件的 MATCHES