这是命令,错误产生:
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
]
}
],
...
我该怎么做?
答案 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