Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

mongoose - MongoDB - Join on multiple condition

For the below query

SQL:

SELECT * FROM TableA as A LEFT JOIN TableB as B ON (A.id = B.id AND A.name =B.name)

Mongo:

TableA.aggregate([
    {"$lookup": {
                "from": "TableB",
                "localField": "_id",
                "foreignField": "_id",
                "as": "b"
                }},
                { "$match": {  "name":"b.name" } }

])

For the above query, required output is not coming.

question from:https://stackoverflow.com/questions/65880825/mongodb-join-on-multiple-condition

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You could refer this sample playground

db.orders.aggregate([
  {
    "$lookup": {
      from: "inventory",
      let: {
        id: "$_id",
        item: "$item"
      },
      pipeline: [
        {
          "$match": {
            $expr: {
              "$eq": [
                "$_id",
                "$$id"
              ],
              "$eq": [
                "$sku",
                "$$item"
              ]
            }
          }
        }
      ],
      as: "outputs"
    }
  }
])

Reference


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...