【发布时间】:2015-07-21 02:21:01
【问题描述】:
考虑 MongoDB 的 zip codes aggregation 示例 data set。集合中的每个文档如下所示:
{
"_id": "10280",
"city": "NEW YORK",
"state": "NY",
"pop": 5574,
"loc": [
-74.016323,
40.710537
]
}
如何将集合转换为一个对象,其中每个键都是字段的值,每个值都是集合中的对象?
例如,给定两个文档
{ "_id" : "01001", "city" : "AGAWAM", "loc" : [ -72.622739, 42.070206 ], "pop" : 15338, "state" : "MA" }
{ "_id" : "01002", "city" : "CUSHMAN", "loc" : [ -72.51564999999999, 42.377017 ], "pop" : 36963, "state" : "MA" }
如何将它们转换为单个文档
{
"01001": { "_id" : "01001", "city" : "AGAWAM", "loc" : [ -72.622739, 42.070206 ], "pop" : 15338, "state" : "MA" },
"01002": { "_id" : "01002", "city" : "CUSHMAN", "loc" : [ -72.51564999999999, 42.377017 ], "pop" : 36963, "state" : "MA" }
}
?
我正在尝试 MongoDB shell 命令db.zips.aggregate({$project: { "$_id":"$$CURRENT"}}).pretty(),但收到错误消息$expressions are not allowed at the top-level of $project。
我也尝试使用带有命令 db.zips.mapReduce(function(){emit(this._id, this)},function(k,v){}, {out:"stuffs"}) 的 mapReduce,但毫不奇怪,它只会产生(使用 db.stuffs.find())
{ "_id" : "01001", "value" : { "_id" : "01001", "city" : "AGAWAM", "loc" : [ -72.622739, 42.070206 ], "pop" : 15338, "state" : "MA" } }
{ "_id" : "01002", "value" : { "_id" : "01002", "city" : "CUSHMAN", "loc" : [ -72.51565, 42.377017 ], "pop" : 36963, "state" : "MA" } }
【问题讨论】:
标签: mongodb mapreduce aggregation-framework