【发布时间】:2014-07-18 08:33:21
【问题描述】:
当我对包含少量文档的 MongoDB 集合执行 Mapreduce 操作时,一切正常。
但是当我使用包含大约 140.000 个文档的集合运行它时,我得到了一些奇怪的结果:
地图功能:
function() { emit(this.featureType, this._id); }
减少功能:
function(key, values) { return { count: values.length, ids: values };
因此,我希望(对于每个映射键):
{
"_id": "FEATURE_TYPE_A",
"value": { "count": 140000,
"ids": [ "9b2066c0-811b-47e3-ad4d-e8fb6a8a14e7",
"db364b3f-045f-4cb8-a52e-2267df40066c",
"d2152826-6777-4cc0-b701-3028a5ea4395",
"7ba366ae-264a-412e-b653-ce2fb7c10b52",
"513e37b8-94d4-4eb9-b414-6e45f6e39bb5", .......}
但是我得到了这个奇怪的文档结构:
{
"_id": "FEATURE_TYPE_A",
"value": {
"count": 706,
"ids": [
{
"count": 101,
"ids": [
{
"count": 100,
"ids": [
"9b2066c0-811b-47e3-ad4d-e8fb6a8a14e7",
"db364b3f-045f-4cb8-a52e-2267df40066c",
"d2152826-6777-4cc0-b701-3028a5ea4395",
"7ba366ae-264a-412e-b653-ce2fb7c10b52",
"513e37b8-94d4-4eb9-b414-6e45f6e39bb5".....}
如果这是预期的行为,或者我做错了什么,有人可以解释一下吗?
提前致谢!
【问题讨论】:
-
文档的数量似乎是您的问题。 140,000 可以转储到看似只有几个(或您的示例 1 )数组中。为什么需要这样做?有趣的是,它确实适用于聚合。
-
我正在将输出保存到一个新的集合中,结果文档的大小不大于16mb,据我了解,系统应该能够正确管理它。
-
文档中包含这样做的原因。响应解释了这一点以及如何使用各种方法进行纠正。
标签: mongodb mapreduce aggregation-framework