MongoDB聚合超过16mb为什么?

时间:2017-09-12 18:17:36

标签: mongodb pymongo aggregation

我正在使用pymongo 3.5。以下查询抛出异常,告诉我BSON文档超过了16mb的限制。 但是怎么可能呢? 我已经使用“$ out”选项将结果写入集合而不是返回值。

c.get('endDate').setErrors(null)

Here说在管道处理过程中,文档可能超过这个大小。

预期结果的一个例子是:

pipeline = [
        {"$match": match_dict},
        {"$unwind": "$fields"},
        {"$match": {
                field_types[field_type]:field
        }},
        { "$group": {
                "_id": "$fields.value",
                "count" : {"$sum" : 1},
                "unique_ids" : {"$addToSet" : {"doc":"$_id","items":"$items"}},
        }},
        {"$unwind": "$unique_ids"},
        { "$group": {
                "_id": {"value":"$_id","count":"$count"},
                "items_sum" : {"$sum" : "$unique_ids.items"}
        }},
        { "$project" : {
            "_id": {"value":"$_id.value"},
            "count" : "$_id.count",
            "items_sum" : "$items_sum"
        }},
        {"$out": collection_name}
]
db.records.aggregate(pipeline,allowDiskUse=True)

数据结构:

[{"count": 79293, "_id": {"value": "06101"}, "items_sum": 111700},
{"count": 47352, "_id": {"value": "06120"},...]

{ "_id": <the_doc_id> "items": 30, "fields": [ { "marc_field_subfield": "008", "value": "150504s2010 gr abe r 000 0 gre|c" }, { "marc_field_subfield": "020a", "value": "9789604751235" }, { "marc_field_subfield": "020q" "value": "(\u03c7\u03b1\u03c1\u03c4\u03cc\u03b4.)" }, { "marc_field_subfield": "040a" "value": "GR-KeIUL" }, { "marc_field_subfield": "040a" "value": "EL" } ] } 匹配特定的field_types[field_type]:field,它可以在字段数组中存在多次(例如“040a”)

0 个答案:

没有答案