相关疑难解决方法(0)

无法获得allowDiskUse:True可以与pymongo一起使用

我正在aggregation result exceeds maximum document size (16MB)使用pymongo进行mongodb聚合的错误.

我首先使用该limit()选项克服了它.但是,在某些时候我得到了

Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in." error.
Run Code Online (Sandbox Code Playgroud)

好的,我会用这个{'allowDiskUse':True}选项.当我在命令行上使用它时,此选项有效,但是当我尝试在我的python代码中使用它时

result = work1.aggregate(pipe, 'allowDiskUse:true')
Run Code Online (Sandbox Code Playgroud)

我收到TypeError: aggregate() takes exactly 2 arguments (3 given)错误.(尽管在http://api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection.Collection.aggregate:aggregate(pipeline,** kwargs)中给出了定义.

我尝试使用runCommand,或者说它的pymongo等价:

db.command('aggregate','work1',pipe, {'allowDiskUse':True})
Run Code Online (Sandbox Code Playgroud)

但现在我回到'聚合结果超过最大文档大小(16MB)'错误

如果你需要知道

pipe = [{'$project': {'_id': 0, 'summary.trigrams': 1}}, {'$unwind': '$summary'}, {'$unwind': '$summary.trigrams'}, {'$group': {'count': {'$sum': 1}, '_id': '$summary.trigrams'}}, {'$sort': {'count': -1}}, {'$limit': 10000}]
Run Code Online (Sandbox Code Playgroud)

谢谢

mongodb pymongo aggregation-framework

16
推荐指数
1
解决办法
1万
查看次数

Mongodb按字符串数组排序并使用索引

如何通过一个字符串数组进行排序查询,该字符串将"stage" : "SORT"在其计划中执行?

我正在使用mongo 3.6
"mycoll"集合包含大约500,000个这样的文档:

{
    someobject:{
        arrayfield:["asd","qwe"]
    }
}

{
    someobject:{
        arrayfield:["zxc"]
    }
}
Run Code Online (Sandbox Code Playgroud)

这个查询

db.mycoll.find().sort({ "someobject.arrayfield": 1 }).skip(125340).limit(20)
Run Code Online (Sandbox Code Playgroud)

产生错误

排序操作使用的RAM超过最大33554432字节

我有"someobject.arrayfield"的索引,但是explain()给了我:

 "winningPlan" : {
            "stage" : "SKIP",
            "skipAmount" : 125340,
            "inputStage" : {
                    "stage" : "SORT",
                    "sortPattern" : {
                            "someobject.arrayfield" : 1
                    },
                    "limitAmount" : 125360,
                    "inputStage" : {
                            "stage" : "SORT_KEY_GENERATOR",
                            "inputStage" : {
                                    "stage" : "FETCH",
                                    "inputStage" : {
                                            "stage" : "IXSCAN",
                                            "keyPattern" : {
                                                    "someobject.arrayfield" : 1
                                            },
                                            "indexName" : "arrayfield_indexname",

                                            "isMultiKey" …
Run Code Online (Sandbox Code Playgroud)

mongodb

10
推荐指数
1
解决办法
532
查看次数

MongoDB 2.6 排序查询的最大限制

使用 mongo sort 对 200 万条记录进行排序是否可能?

从MongoDB文档中,明确提到“当排序操作消耗超过32兆字节时,MongoDB返回错误”。

但我需要对大量记录进行排序。怎么做?

mongodb

3
推荐指数
1
解决办法
2603
查看次数

标签 统计

mongodb ×3

aggregation-framework ×1

pymongo ×1