2014-03-26 82 views
0

我有一些數據,看起來像這樣(沒有真實的數據)。

{ 
     _id:'cust04', 
     name:'Diarmuid Rellis', 
     address:'Elysium, Passage East', 
     county:'Waterford', 
     phone:'051-345786', 
     email:'[email protected]', 
     quotations:[ 
     { 
      _id:'quot03', 
      supplier_ref:'A2006', 
      date_received: new Date('2013-05-12T00:00:00'), 
      date_returned: new Date('2013-05-15T00:00:00'), 
      supplier_price:35000.00, 
      customer_price:35000.00, 
      orders:[ 
       { 
        _id:'ord03', 
        order_date: new Date('2013-05-20T00:00:00'), 
        del_date: new Date('2013-08-12T00:00:00'), 
        del_address:'Elysium, Passage East, Co. Waterford', 
        status:'BALPAID' 
       } 
      ] 
     }, 
     { 
      _id:'quot04', 
      supplier_ref:'A2007', 
      date_received: new Date('2013-08-10T00:00:00'), 
      date_returned: new Date('2013-08-12T00:00:00'), 
      supplier_price:29600.00, 
      customer_price:29600.00, 
      orders:[ 
       { 
        _id:'ord04', 
        order_date: new Date('2014-03-20T00:00:00'), 
        del_date: new Date('2014-05-12T00:00:00'), 
        del_address:'Elysium, Passage East, Co. Waterford', 
        status:'INPROD' 
       } 
      ] 
     } 
     ] 
    } 

我想放鬆的報價和訂單陣列,並得到所有的訂單在投影生產包括客戶名稱,supplier_ref和每個訂單日期。

這裏是我的查詢:

db.customers.aggregate([ 
    { $unwind: "$quotations" }, 
    { $unwind: "$quotations.orders" }, 
    { $match: { 'quotations.orders.status': 'INPROD' } }, 
    { 
    $project: { 
     name: 1, 
      supplier_ref: "$quotations.supplier_ref", 
      order_id: "$quotations.orders._id", 
      order_date: "$quotations.orders.order_date" 
      }  
    }, 
    { 
     $group: { 
      _id: "$order_id" 
     } 

    } 
], function (err, results) { 
console.log(results); 
}) 

查詢運行成功,但只是給訂單ID,沒有任何需要等領域。我錯過了什麼?

編輯

我希望像一個結果:

"result": [ 
    { 
    "_id" : "orderid01", 
    "name" : "Joe Bloggs", 
    "supplier_ref" : "A1234", 
    "date_ordered" : "2012-04-14" 
    }, 
    { 
    "_id" : "orderid02", 
    "name" : "Joe Bloggs", 
    "supplier_ref" : "A1235", 
    "date_ordered" : "2012-04-16" 
    } 
] 

當我添加一個字段來我的 '羣' 的功能,像這樣:

$group: { 
     _id: "$order_id", 
     supplier_ref: "$supplier_ref" 

    } 

我得到錯誤:「組合字段'supplier_ref'必須被定義爲對象內的表達式」。我是否必須以某種方式將它與結果對象相關聯?

+2

什麼**完全**你希望返回(可能編輯您的問題)。但是,當在這個級別的「order_id」上「分組」時,它不會返回其他許多內容。這同樣適用於其他數據存儲。 –

+0

如果你想查看附加字段,將這些字段添加到你的$ group部分,因爲尼爾提到 – anvarik

+0

編輯爲了進一步明確我的問題,感謝輸入 –

回答

1

刪除組函數完全產生了我想要的結果。