【发布时间】:2011-12-31 18:43:04
【问题描述】:
我有一个 MongoDB 集合(名为“目录”),其中包含大约 5 个天文目录。其中几个目录相互引用,因此其中一个文档可能如下所示:
{ "_id" : ObjectId("4ec574a68e4e7a519166015f"), "bii" : 20.9519, "class" : 2480, "cpdname" : "CPD -21 6109", "decdeg" : -21.8417, "decpm" : 0.004, "dmname" : "-21 4299", "hdname" : "HD 145612", "lii" : 352.8556, "name" : "PPM 265262", "ppmname" : "PPM 265262", "radeg" : 243.2005, "rapm" : 0.0012, "vmag" : 9.6, "xref" : [ ] }
我想要做的是使用 mapreduce 将“hdname”、“ppmname”等字段移动到外部参照数组中(然后取消设置它们)。
所以我尝试一次做一个,从 hdname 字段开始。以下是 map 和 reduce 函数:
map = function() {
for (var hdname in this.hdname) {
emit(this._id,this.hdname);
}
}
reduce = function(key, values) {
var result = [];
for (var hdname in values) {
result.push(hdname);
}
return result;
}
我尝试在 mongo shell 中运行以下命令:
db.catalog.mapReduce(map, reduce,"catalog2");
很遗憾,我收到以下错误:
Thu Nov 17 15:52:17 uncaught exception: map reduce failed:{
"assertion" : "reduce -> multiple not supported yet",
"assertionCode" : 10075,
"errmsg" : "db assertion failure",
"ok" : 0
}
显然我是个新手...谁能帮忙?
杰森
【问题讨论】:
标签: mongodb