代码之家  ›  专栏  ›  技术社区  ›  Sourabh Bhutani

在MongoDB中,如何使用$lookup只获取不匹配的记录?

  •  1
  • Sourabh Bhutani  · 技术社区  · 7 年前

    在MongoDB中,我想获取那些没有订单的产品的数据。

    收藏: 主\产品\详细信息,主\订单\详细信息

    我使用的是普通的$lookup查询,它提供了所有与订单匹配或不匹配的记录。

    db.master_product_details.aggregate([
            { 
            $match: { seller_user_id : 'seller_id' } 
            },
            {
            $lookup : {from: "master_order_details",localField: "seller_sku_id", foreignField: "sku_id", as : "Orders"} 
            },
            {$unwind : '$Orders'},
            {$project : { seller_sku_id : 1, product_title : 1, _id : 0}
    
                }
            ])
    

    还有其他方法可以得到结果吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Ashh    7 年前

    再使用一次 $match 管道末端状况

    db.master_product_details.aggregate([
      { "$match": { "seller_user_id": "seller_id" }},
      { "$lookup": {
        "from": "master_order_details",
        "localField": "seller_sku_id",
        "foreignField": "sku_id",
        "as": "Orders"
      }},
      { "$match": { "Orders": [] }}
    ])