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

时间:2019-01-25 09:21:49

标签: database mongodb aggregate-functions

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

收藏集: master_product_details,master_order_details

我正在使用普通的$ 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 个答案:

答案 0 :(得分:0)

在管道末端再使用一个$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": [] }}
])