mongodb union 2收藏和统计

时间:2016-09-18 10:18:32

标签: javascript node.js mongodb collections union

我有关于mongodb和node.js的问题。我有这个名为PIZZA的集合

{ title: "bacon" }
{ title: "pepperoni" }

和另一个名为ORDERS的集合

{ orderid: 1, pizza: "bacon" }
{ orderid: 2, pizza: "pepperoni" }
{ orderid: 3, pizza: "bacon" }
{ orderid: 4, pizza: "bacon" }

我需要有这样的结果

{ title: "bacon", orders: 3 }
{ title: "pepperoni", orders: 1 }

我可以使用一个查询吗?

我需要知道集合ORDERS中有多少项目,并将结果与​​集合PIZZA合并,我正在使用MongoClient

2 个答案:

答案 0 :(得分:0)

简单的聚合管道应该为您提供结果:

db.orders.aggregate([
    {
        "$group": {
            "_id": "$pizza",
            "orders": { "$sum": 1 }
        }
    },
    {
        "$project": {
            "_id": 0,
            "title": "$_id",
            "orders": 1
        }
    }
])

答案 1 :(得分:0)

@chridam给出的上述答案看起来不错,您只需要使用"$project"而不是"project"。但是,您可以使用$lookup

db.pizza.aggregate([
{
    $lookup: { 
      from: "orders",
      localField: "title",
      foreignField: "pizza",
      as: "totalOrders"
    }
  },
  {
    $project: {
      _id: 0,
      title: 1,
      orders: { 
        $size: "$totalOrders" 
      }
    }
  }
])