聚合输出消失但数据库大小加倍

时间:2015-05-07 11:25:22

标签: mongodb

聚合输出消失。

我运行了一个聚合任务。

它应该将结果写入另一个集合。

数据量非常大,大约 1TB

现在,我检查了数据库状态,它显示当前数据库大小 2TB

并且tmp.agg_out.1不再存在,所以假设任务完成了

tw_weather  2296.832GB

输出集合的计数是 ZERO

> db.result.count()
0

结果在哪里?如果没有输出,为什么DB大小加倍?

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1105 mongodb   20   0  4.495t 9.368g 771684 S   0.3 63.8 488:26.99 mongod

有没有让我知道现在发生了什么?

~$ mongostat
insert query update delete getmore command flushes  mapped   vsize  res faults idx miss % qr|qw ar|aw netIn netOut conn     time
    *0    *0     *0     *0       0     1|0       0 2296.9G 4602.7G 9.4G      0          0   0|0   0|0   79b    10k    2 02:41:29
    *0    *0     *0     *0       0     1|0       0 2296.9G 4602.7G 9.4G      0          0   0|0   0|0   79b    10k    2 02:41:30
    *0    *0     *0     *0       0     1|0       0 2296.9G 4602.7G 9.4G      0          0   0|0   0|0   79b    10k    2 02:41:31
    *0    *0     *0     *0       0     1|0       0 2296.9G 4602.7G 9.4G      0          0   0|0   0|0   79b    10k    2 02:41:32


~$ mongotop
2015-05-08T02:42:37.117+0000    connected to: 127.0.0.1

                                              ns    total    read    write    2015-05-08T02:42:38Z
                              admin.system.roles      0ms     0ms      0ms
                            admin.system.version      0ms     0ms      0ms
                               local.startup_log      0ms     0ms      0ms
                            local.system.indexes      0ms     0ms      0ms
                         local.system.namespaces      0ms     0ms      0ms
                            local.system.replset      0ms     0ms      0ms
           weather.cds      0ms     0ms      0ms
 weather.import_errors      0ms     0ms      0ms
      weather.result      0ms     0ms      0ms
weather.system.indexes      0ms     0ms      0ms        

以下是汇总代码段

它适用于样本数据(大约1000万,但在大约10亿大小的整个数据上失败)

source_collection = "cds"
output_collection = "result"
db[output_collection].drop()
db[output_collection].createIndex({symptom_history:1});
pipeline = [
    { "$project": {
        "doc": "$$ROOT",
        "id": "$$ROOT.ID",
        "weathers": "$$ROOT.weathers"
    }},
    {"$unwind": '$weathers'},
    {"$group":{'_id': "$id",
              'records': {'$push': '$doc'},
              'weather_history': {'$addToSet': '$weathers'},
              'count': {"$sum": 1}
              }
    },
    {
        "$project": {
            "id": "$id",
            "weather_history": "$weather_history",
            "count": "$count",
            "records": "$records",
        }
    },
    { "$out" : output_collection }
]

cur = db[source_collection].runCommand('aggregate',
    {pipeline: pipeline,allowDiskUse: true})

0 个答案:

没有答案