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'必須被定義爲對象內的表達式」。我是否必須以某種方式將它與結果對象相關聯?
什麼**完全**你希望返回(可能編輯您的問題)。但是,當在這個級別的「order_id」上「分組」時,它不會返回其他許多內容。這同樣適用於其他數據存儲。 –
如果你想查看附加字段,將這些字段添加到你的$ group部分,因爲尼爾提到 – anvarik
編輯爲了進一步明確我的問題,感謝輸入 –