【发布时间】:2017-07-21 18:24:48
【问题描述】:
我有数据集,我需要该数据集中的两个不同组的值。请在下面找到数据集,
[{
"ASSIGN_ID": "583f84bce58725f76b322398",
"SPEC_ID": "58411772",
"STATUS": 1,
"UPDATE_DATE": ISODate("2016-12-21T04:10:23.000Z")
},
{
"ASSIGN_ID": "583f84bce58725f76b322398",
"SPEC_ID": "58411772",
"STATUS": 4,
"UPDATE_DATE": ISODate("2016-12-22T04:10:23.000Z")
},
{
"ASSIGN_ID": "583f84bce58725f76b322398",
"SPEC_ID": "58411772",
"STATUS": 4,
"UPDATE_DATE": ISODate("2016-12-23T04:10:23.000Z")
},
{
"ASSIGN_ID": "583f84bce58725f76b322398",
"SPEC_ID": "58411774",
"STATUS": 3,
"UPDATE_DATE": ISODate("2016-12-24T04:10:23.000Z")
},
{
"ASSIGN_ID": "583f84bce58725f76b322311",
"SPEC_ID": "58411775",
"STATUS": 1,
"UPDATE_DATE": ISODate("2016-12-25T04:10:23.000Z")
},
{
"ASSIGN_ID": "583f84bce58725f76b322311",
"SPEC_ID": "58411775",
"STATUS": 3,
"UPDATE_DATE": ISODate("2016-12-23T04:10:23.000Z")
},
{
"ASSIGN_ID": "583f84bce58725f76b322322",
"SPEC_ID": "58411774",
"STATUS": 1,
"UPDATE_DATE": ISODate("2016-12-20T04:10:23.000Z")
},
{
"ASSIGN_ID": "583f84bce58725f76b322322",
"SPEC_ID": "58411778",
"STATUS": 4,
"UPDATE_DATE": ISODate("2016-12-21T04:10:23.000Z")
}
]
我想通过使用 ASSIGN_ID 和 STATUS 以及在我需要的每个 ASSIGN_ID 组内进行分组 SPEC_ID以及STATUS。请在下面找到预期的输出,
[{
"ASSIGN_ID": "583f84bce58725f76b322398",
"ASSIGN_GROUP": [{
"STATUS": 1,
"COUNT": 1
},
{
"STATUS": 3,
"COUNT": 1
},
{
"STATUS": 4,
"COUNT": 2
}
],
"SPEC_ARRAY": [{
"SPEC_ID": "58411772",
"SPEC_GROUP": [{
"STATUS": 1,
"COUNT": 1
},
{
"STATUS": 4,
"COUNT": 2
}
]
},
{
"SPEC_ID": "58411774",
"SPEC_GROUP": [{
"STATUS": 3,
"COUNT": 1
}]
}
]
},
{
"ASSIGN_ID": "583f84bce58725f76b322311",
"ASSIGN_GROUP": [{
"STATUS": 1,
"COUNT": 1
},
{
"STATUS": 3,
"COUNT": 1
}
],
"SPEC_ARRAY": [{
"SPEC_ID": "58411775",
"SPEC_GROUP": [{
"STATUS": 1,
"COUNT": 1
},
{
"STATUS": 3,
"COUNT": 1
}
]
}]
},
{
"ASSIGN_ID": "583f84bce58725f76b322322",
"ASSIGN_GROUP": [{
"STATUS": 1,
"COUNT": 1
},
{
"STATUS": 4,
"COUNT": 1
}
],
"SPEC_ARRAY": [{
"SPEC_ID": "58411774",
"SPEC_GROUP": [{
"STATUS": 1,
"COUNT": 1
}]
},
{
"SPEC_ID": "58411778",
"SPEC_GROUP": [{
"STATUS": 4,
"COUNT": 1
}]
}
]
}
]
目前,我到目前为止所做的只是将 ASSIGN_ID 分组并按 STATUS 请在下面找到代码,
Modal.aggregate([
{
"$group": {
"_id": {
"INSPECTED_BY": "$INSPECTED_BY",
"STATUS": "$STATUS"
},
"spec_id": "$SPEC_ID",
"total": {
"$sum": 1
}
}
}, {
"$group": {
"_id": "$_id.INSPECTED_BY",
"data": {
"$push": {
"STATUS": "$_id.STATUS",
"total": "$total"
}
}
}
}
]);
结果是
[
{
"_id": "583f84bce58725f76b322398",
"data": [
{
"STATUS": 1,
"COUNT": 1
}, {
"STATUS": 3,
"COUNT": 1
}, {
"STATUS": 4,
"COUNT": 2
}
]
}, {
"_id": "583f84bce58725f76b322311",
"data": [
{
"STATUS": 1,
"COUNT": 1
}, {
"STATUS": 3,
"COUNT": 1
}
]
}, {
"_id": "583f84bce58725f76b322322",
"data": [
{
"STATUS": 1,
"COUNT": 1
}, {
"STATUS": 4,
"COUNT": 1
}
]
}
]
请给我一个合适的解决方案以获得预期的结果。
【问题讨论】:
-
你的 mongo 服务器版本是多少?
-
版本是:3.2.1
标签: javascript node.js mongodb mongoose aggregation-framework