【发布时间】:2017-06-23 22:33:50
【问题描述】:
我确实看过很多代码示例,但我从来没有找到我想要的东西。实际上我可以做一个循环,但我真的更喜欢使用 mongo 引擎来获得我想要的结果。更疯狂的是,我开始花大量时间在它上面,而且看起来很基础......
我正在使用带有 Express 和 MongoDB 的 nodeJS 运行。
基本上我有一个包含一些信息的集合,例如:
{
"aqi": 149,
"area": "AL",
"position_name": "montgomery",
"station_code": "1793A",
},
{
"aqi": 162,
"area": "AL",
"position_name": "huntsville",
"station_code": "1790A",
},
{
"aqi": 73,
"area": "TX",
"position_name": "dallas",
"station_code": "1792A",
}
我想得到一个类似的结果数据集
{
"_id": "AL",
"positions": [
{
"position_name": "montgomery",
"station_code": "1793A"
},
{
"position_name": "huntsville"
"station_code": "1790A"
}
]
},
{
"_id": "TX",
"positions": [
{
"position_name": "dallas",
"station_code": "1793A"
}
]
}
到目前为止,我真的认为我确实检查了整个stackoverflow并尝试了几种解决方案,同时如果我错了并且已经存在类似问题的问题,请告诉我,我提前道歉。
我当前的代码:
db.collection('cities', function(err, collection) {
collection.aggregate([{$group : {_id : "$area"}}], function(err, items) {
res.send(items);
});
});
我正在考虑混合匹配(区域)和组,但直到现在都没有成功。
感谢您的帮助。
编辑:
我确实忘记了组操作员来执行此操作。这里是新代码:
db.collection('cities', function(err, collection) {
collection.aggregate([{$group : {_id: "$area", positions: {$push : "$position_name"}}}], function(err, items) {
res.send(items);
});
});
【问题讨论】:
标签: node.js mongodb aggregation-framework