【问题标题】:How to perform equi join in mongodb?如何在mongodb中执行equi join?
【发布时间】:2018-10-22 01:33:03
【问题描述】:

我知道如何在 mongoDB 中使用查找来执行左连接,但是有没有任何可能的方法来执行等值连接,只有当两个字段都匹配时才能获取文档?

db.collection1.aggregate([
  {
    $lookup:{
      from: "collection2",
      localField: "fname",
      foreignField: "fname",
      as: "sameFirstName"
    }
  }
]).pretty()

假设在上面的代码中,我知道它将执行左连接,将 collection1 中的所有 fname 与 collection2 中的 fname 匹配,并返回 collection1 中的 fname,但在 collection2 中没有任何匹配项(显示 null,因为它是左外连接)。如果我想进行 equi join 并仅返回两个集合中具有相同 fname 的结果怎么办?

【问题讨论】:

  • 你的意思是_id
  • 希望编辑后更清楚。谢谢
  • 发布一些收集样本和你想要的输出

标签: mongodb mongodb-query


【解决方案1】:

在 $lookup 管道之后,在 lookup 中的“as”变量上使用 $match。

db.collection1.aggregate([
   {
     $lookup:{
             from: "collection2",
             localField: "fname",
             foreignField: "fname",
             as: "sameFirstName"
     }
   },
   {"$match":{"sameFirstName":{$ne:[]}}}
 ])

【讨论】:

    猜你喜欢
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多