Javascript MongoDB aggregate().$unwind
我有一些看起来像这样的数据(不是真实数据): 我正在尝试解开报价单和订单数组,并获得生产中所有订单的投影,其中包括每个订单的客户名称、供应商名称和订单日期 我的问题是:Javascript MongoDB aggregate().$unwind,javascript,mongodb,Javascript,Mongodb,我有一些看起来像这样的数据(不是真实数据): 我正在尝试解开报价单和订单数组,并获得生产中所有订单的投影,其中包括每个订单的客户名称、供应商名称和订单日期 我的问题是: db.customers.aggregate([ { $unwind: "$quotations" }, { $unwind: "$quotations.orders" }, { $match: { 'quotations.orders.status': 'INPROD' } }, {
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”函数添加一个额外字段时,如下所示:
$group: {
_id: "$order_id",
supplier_ref: "$supplier_ref"
}
我得到错误:“组聚合字段‘supplier_ref’必须定义为对象内的表达式”。我是否必须以某种方式将其与结果对象关联?删除组函数会产生我想要的结果。您希望返回什么(可能对您的问题进行编辑)。但是当在
订单id
上进行这一级别的“分组”时,不可能返回更多其他内容。这同样适用于其他数据存储。如果您想查看其他字段,请将这些字段添加到Neil提到的$group部分编辑以进一步澄清我的问题,谢谢您的输入
$group: {
_id: "$order_id",
supplier_ref: "$supplier_ref"
}