同一集合上的MongoDB聚合
我需要从另一个文档中获取值,以下是我的示例文档:同一集合上的MongoDB聚合,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我需要从另一个文档中获取值,以下是我的示例文档: [ { "product_code": "0172745", "condition_type": "ZPRE", "price_group": "33", "visibility": "brp, network", "sales_org": "1010", "distr_channel": "10", "price_type": "dealer", "price_market":
[
{
"product_code": "0172745",
"condition_type": "ZPRE",
"price_group": "33",
"visibility": "brp, network",
"sales_org": "1010",
"distr_channel": "10",
"price_type": "dealer",
"price_market": "na",
"valid_from": "2019-07-01",
"valid_to": "9999-12-31",
"price_price_uom": "5.30",
"price_uom": "PC",
"price_sales_uom": "12.90",
"sales_uom": "PC",
"currency": "CAD",
"last_change_date": "2020-01-17T20:14:15"
}
},
{
"product_code": "0172745",
"condition_type": "ZPBA",
"price_group": "2R",
"visibility": "brp, network",
"sales_org": "1010",
"distr_channel": "10",
"price_type": "dealer",
"price_market": "na",
"valid_from": "2019-07-01",
"valid_to": "9999-12-31",
"price_price_uom": "5.30",
"price_uom": "PC",
"price_sales_uom": "5.300",
"sales_uom": "PC",
"currency": "CAD",
"last_change_date": "2020-01-17T20:14:15"
}
]
输出应为文件2
+价格销售计量单位
自文件1
,聚合为产品代码
和条件类型
:
{
"product_code": "0172745",
"condition_type": "ZPBA",
"price_group": "2R",
"price_sales_uom": "12.90"
}
请尝试下面的查询,这将根据
产品\u code
对所有文档进行分组:
db.collection.aggregate([
{
$group: {
_id: '$product_code', product_code: { $first: '$product_code' },
condition_type: { $last: '$condition_type' },
price_group: { $last: '$price_group' },
price_sales_uom: { $max: '$price_sales_uom' }
}
}, { $project: { _id: 0 } }])
注意:在这个问题的给定状态下,此查询假设在匹配的文档上获得
价格销售计量单位
的最大值(如果必须来自第一个文档使用$first
),类似地条件类型
,从组中的最后一个文档中检索价格组
,但是对于产品而言,无论是$first
还是$last
,它们都是一样的。你所说的聚合是指产品代码和条件类型
?您需要什么样的基础price\u sales\u uom
和price\u group
?你的问题太令人困惑了!!price\u sales\u uom
也是字符串的一种吗?请尝试下面的答案并让我们知道..这是否回答了您的问题?