2016-09-18 64 views
0

我有一個關於mongodb和node.js的問題。我曾在此集合名爲PIZZAmongodb union 2 collections and count

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

和另一個集合名爲訂單

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

我需要有這樣的

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

結果我能有這樣一個查詢?

我需要知道有多少項目有在收集訂單和合並與彙集PIZZA結果,我使用MongoClient

+1

你可以用'$ aggregate' - 檢查這個答案:http://stackoverflow.com/a/35948843/636559 – AboulEinein

回答

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" 
     } 
    } 
    } 
]) 
0

一個簡單的彙總管線應該給你的結果:

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