更改名称聚合字段mongodb
我正在MongoDB中进行聚合,我想更改引用字段的名称: 这是我的总结:更改名称聚合字段mongodb,mongodb,mongoose,Mongodb,Mongoose,我正在MongoDB中进行聚合,我想更改引用字段的名称: 这是我的总结: [ {"$ match": { "attrName": {$ in: arr}}}, {"$ group": { "_id": { "recvTime": "$ recvTime", "attrName": "$ attrName", "attrValue": "$ attrValue" }
[
{"$ match": {
"attrName": {$ in: arr}}},
{"$ group": {
"_id": {
"recvTime": "$ recvTime",
"attrName": "$ attrName",
"attrValue": "$ attrValue"
}
}},
{"$ group": {
"_id": "$ _id.attrName",
"dates": {
"$ push": {
"recvTime": "$ _id.recvTime",
"attrValue": "$ _id.attrValue"
},
},
}}
]
这是你的答案:
[
{
"_id": "var_ContadorRiego",
"dates": [
{
"recvTime": "2018-03-24T01: 18: 18.619Z",
"attrValue": "12"
},
{
"recvTime": "2018-03-25T01: 18: 18.619Z",
"attrValue": "19"
}
]
},
{
"_id": "var_TempExt",
"dates": [
{
"recvTime": "2018-03-25T01: 18: 18.619Z",
"attrValue": "16.511116"
},
{
"recvTime": "2018-03-24T01: 18: 18.619Z",
"attrValue": "12.511116"
}
]
}
]
我希望它在哪里写着_idput name,在哪里写着recvTime put name,在哪里写着attrValue put value
最终目标如下:
[
{
"name": "var_ContadorRiego",
"dates": [
{
"name": "2018-03-24T01: 18: 18.619Z",
"value": "12"
},
{
"name": "2018-03-25T01: 18: 18.619Z",
"value": "19"
}
]
},
{
"name": "var_TempExt",
"dates": [
{
"name": "2018-03-25T01: 18: 18.619Z",
"value": "16.511116"
},
{
"name": "2018-03-24T01: 18: 18.619Z",
"value": "12.511116"
}
]
}
]
这可以直接从聚合中完成吗?或者我必须遍历整个对象并进行更改
问候并感谢您。首先通过以下方式更改第二个$group:
{"$group": {
"_id": "$_id.attrName",
"dates": {
"$ push": {
"time": "$_id.recvTime",
"name": "$_id.attrName",
"value": "$ _id.attrValue"
},
},
}}
然后使用聚合管道末尾的$project重命名\u id字段
{ $project: {
_id: 0,
name: "$_id",
}
}
我希望这会对你有用。将最后两个阶段更改为
{“$group”:{“\u id”:“$\u id.attrName”,“dates”:{“$push”:{“name”:“$\id.recvTime”,“value”:“$\u id.attrValue”}}},{“$project”:{“name”:“$\u id”,“\u id”:0,“dates”:1}
你好,这对我来说很有效,但它将id名称显示在最后一个位置,因为我可以将它放在开头?[{“日期”:[{“名称”:“var_TempExt”,“值”:“16.511116”},{“名称”:“var_TempExt”,“值”:“12.511116”}],“name”:“var_TempExt”}您好,我使用同志说的方法添加日期:1但是id名称出现在[{“dates”:[{“name”:“var_TempExt”,“value”:“16.511116”},{“name”:“var_TempExt”,“value”:“12.511116”}],“name”:“var_TempExt”}]@Manolait将日期:1放在$project的末尾。