Mongodb聚合错误

时间:2012-12-28 16:47:17

标签: mongodb

这是命令,错误产生:

db.tweets.aggregate(
    {$project:{'entities.hashtags.text':1}},
    {$unwind:'$entities.hashtags'},
    {$group:{_id:'$entities.hashtags.text'}})

{
    "errmsg" : "exception: aggregation result exceeds maximum document size (16MB)",
    "code" : 16389,
    "ok" : 0
}

我想做一个跟随查询:

按entities.hashtags.text分组,并计算包含每个主题标签存在的主题标签的文档数。

这是文件的一部分:

...

实体:     {

   media: [

         ...

    ],

    urls: [],

    hashtags: [

        {

            text: "makeuploos",

            indices: [

                54,

                65

            ]

        },

        {

            text: "onbewerkt",

            indices: [

                66,

                76

            ]

        },

        {

            text: "hoer",

            indices: [

                77,

                82

            ]

        }

    ],

...

我该怎么做?

2 个答案:

答案 0 :(得分:0)

在展开后的某处添加$where并尝试仅匹配相关数据。你只需要许多不同的主题标签,它们不符合16MB的限制。

答案 1 :(得分:0)

从MongoDB v.2.6开始,您可以使用选项 allowDiskUse 。例如:

  db.tweets.aggregate(
    [
      {$project:{'entities.hashtags.text':1}},
      {$unwind:'$entities.hashtags'},
      {$group:{_id:'$entities.hashtags.text'}}
    ],
    {
      allowDiskUse: true
    }
  )

这样可以将数据写入临时文件。 您可以在此处找到更多信息:http://docs.mongodb.org/manual/core/aggregation-pipeline-limits/#agg-memory-restrictions