You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB $lookup如何过滤非匹配文档?

解决MongoDB $lookup后过滤空匹配结果的问题

在你的聚合查询中添加一个$match阶段,即可过滤掉drawnticket为空数组的文档,只保留在lotterydrawing中有对应记录的彩票数据。

完整查询语句

db.lotteryticket.aggregate([
  {
    $lookup: {
      from: "lotterydrawing",
      localField: "ticket",
      foreignField: "ticket",
      as: "drawnticket"
    }
  },
  {
    $match: {
      "drawnticket": { $ne: [] }
    }
  }
])

可选过滤方式

也可以通过判断数组长度大于0来实现相同效果:

db.lotteryticket.aggregate([
  {
    $lookup: {
      from: "lotterydrawing",
      localField: "ticket",
      foreignField: "ticket",
      as: "drawnticket"
    }
  },
  {
    $match: {
      $expr: { $gt: [ { $size: "$drawnticket" }, 0 ] }
    }
  }
])

执行结果

[
  {
    "_id": ObjectId("6021ce0cb4d2c2b4f24c3a33"),
    "ticket": "T3",
    "player": "Charles",
    "drawnticket": [
      {
        "_id": ObjectId("63309480b749b733c087b758"),
        "ticket": "T3"
      }
    ]
  }
]

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 20:15:43