【发布时间】:2020-07-02 04:56:31
【问题描述】:
我有以下 mongoDB 文档 -
{
"_id" : ObjectId("5e71a1f3081c4b70cdbc438f"),
"DataSetID" : ObjectId("5e71a1f3081c4b70cdbc438e"),
"row" : [
{
"key" : "Region",
"prev" : "root",
"value" : "Australia and Oceania",
"typeOfValue" : "string",
"currentDepth" : 1
},
{
"key" : "Country",
"prev" : "root",
"value" : "Tuvalu",
"typeOfValue" : "string",
"currentDepth" : 1
},
{
"key" : "Item Type",
"prev" : "root",
"value" : "Baby Food",
"typeOfValue" : "string",
"currentDepth" : 1
},
{
"key" : "Sales Channel",
"prev" : "root",
"value" : "Offline",
"typeOfValue" : "string",
"currentDepth" : 1
},
{
"key" : "Order Priority",
"prev" : "root",
"value" : "H",
"typeOfValue" : "string",
"currentDepth" : 1
},
{
"key" : "Order Date",
"prev" : "root",
"value" : ISODate("2010-05-27T18:30:00.000Z"),
"typeOfValue" : "date",
"currentDepth" : 1
},
{
"key" : "Order ID",
"prev" : "root",
"value" : 669165933,
"typeOfValue" : "number",
"currentDepth" : 1
},
{
"key" : "Ship Date",
"prev" : "root",
"value" : ISODate("2010-06-26T18:30:00.000Z"),
"typeOfValue" : "date",
"currentDepth" : 1
},
{
"key" : "Units Sold",
"prev" : "root",
"value" : 9925,
"typeOfValue" : "number",
"currentDepth" : 1
},
{
"key" : "Unit Price",
"prev" : "root",
"value" : 255.28,
"typeOfValue" : "number",
"currentDepth" : 1
},
{
"key" : "Unit Cost",
"prev" : "root",
"value" : 159.42,
"typeOfValue" : "number",
"currentDepth" : 1
},
{
"key" : "Total Revenue",
"prev" : "root",
"value" : 2533654,
"typeOfValue" : "number",
"currentDepth" : 1
},
{
"key" : "Total Cost",
"prev" : "root",
"value" : 1582243.5,
"typeOfValue" : "number",
"currentDepth" : 1
},
{
"key" : "Total Profit",
"prev" : "root",
"value" : 951410.5,
"typeOfValue" : "number",
"currentDepth" : 1
}
]
}
假设我们有 100 份这样的文件。 我想进行一个聚合查询,按让我们说 key == 'Country' 的值进行分组,即 Tuvalu 、 India 等,并给我每个国家的 key == 'Total Profit' 的值的总和。
换句话说,给我 values 的总和,其中 key == 'Total Profit' 同时对 key = 的 values 进行分组= '国家'.
可以更改数据结构,因为我输入的是非结构化 JSON 数据,而且我事先不知道键,这就是我想出 json 数组的原因。
最终结果我想要这样的东西:
[
{
_id : 'Tuvalu',
value : 100
},
{
_id : 'India',
value : 160
}
]
我们怎样才能做到这一点?
【问题讨论】:
标签: mongodb mongoose mongodb-query aggregation-framework