mongo 加入两个集合并使用聚合

时间:2021-06-02 16:08:20

标签: mongodb aggregation-framework

我试图只获取那些没有订单的产品,所以每个产品都有一个订单 ID,这些审计表与订单相关联,但现在这些订单已被删除,我需要找到那些没有订单的产品。< /p>

我知道在进行聚合时,如果加入的集合没有记录,它不会将任何内容作为“文档”返回,但是我怎样才能让它只返回我的文档 == 空或空..

db.products.aggregate([

    {
        $match: {
            $and: [
                { "docs": { $exists: false } }
            ]                  
        }
    },
    {
        $lookup: {
            from: "orders",
            localField: "orderId",
            foreignField: "orderId",
            as: "docs"
        }
    },
   {
        $unwind:
       {
          path: "$docs",
          preserveNullAndEmptyArrays: true
       }
   },
   { $limit: 10 }
]).pretty()

1 个答案:

答案 0 :(得分:0)

db.products.aggregate([

    {
        $lookup: {
            from: "orders",
            localField: "orderId",
            foreignField: "orderId",
            as: "docs"
        }
    },
   
   { $match: { docs: [] },

   { $limit: 10 }
]).pretty()