$lookup

    $lookup添加了一个新的数组字段,该字段的元素是 集合中的匹配文档。

    $lookup 语法如下:

    实例

    使用$lookup集合连接

    左集合 orders 内容如下

    另外一个右集合 inventory 内容如下:

    db.inventory.insert([{ "_id" : 1, "sku" : "abc", description: "product 1", "instock" : 120 },{ "_id" : 2, "sku" : "def", description: "product 2", "instock" : 80 },{ "_id" : 3, "sku" : "ijk", description: "product 3", "instock" : 60 },{ "_id" : 4, "sku" : "jkl", description: "product 4", "instock" : 70 },{ "_id" : 5, "sku": null, description: "Incomplete" },{ "_id" : 6 }])

    以下聚合操作对 orders左集合 左连接 ,通过 orders下的iteminventory集合的sku

    • 两个集合必须在同一个db,
    • item是orders左集合字段;
    • sku是inventory右集合字段

    db.orders.aggregate([ { $lookup: { from: "inventory", localField: "item", foreignField: "sku", as: "inventory_docs" } }]).pretty()</div>操作执行返回结果如下:

    $out

    输出到集合