Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongo:如何在(非常)大的收藏中放置副本?_Mongodb_Performance_Mongodb Query_Aggregation Framework_Pymongo - Fatal编程技术网

Mongodb Mongo:如何在(非常)大的收藏中放置副本?

Mongodb Mongo:如何在(非常)大的收藏中放置副本?,mongodb,performance,mongodb-query,aggregation-framework,pymongo,Mongodb,Performance,Mongodb Query,Aggregation Framework,Pymongo,我有一个50+gb的MongoDB集合,包含3500多万个文档。我使用的是Mongo3.4。我正试图删除未知数量的重复项。以下是典型文档的结构: {'_id': ObjectId('609328685fd8ae473473eb9a'), 'ogc_fid': 1054118, 'path': '/us/ca/san-diego/camp-pendleton/1054118' } 我正在使用以下聚合来删除重复项,并在path字段上进行筛选: db.collection.aggre

我有一个50+gb的MongoDB集合,包含3500多万个文档。我使用的是Mongo3.4。我正试图删除未知数量的重复项。以下是典型文档的结构:

{'_id': ObjectId('609328685fd8ae473473eb9a'),
    'ogc_fid': 1054118,
    'path': '/us/ca/san-diego/camp-pendleton/1054118'
}
我正在使用以下聚合来删除重复项,并在
path
字段上进行筛选:

db.collection.aggregate(
    [ 
        { "$sort": { "_id": 1 } }, 
        { "$group": { 
            "_id": "$path", 
            "doc": { "$first": "$$ROOT" } 
        }}, 
        { "$replaceRoot": { "newRoot": "$doc" } },
        { "$out": "collection" }
    ]

)
但是,几分钟后,Mongo shell返回以下错误:

assert: command failed: {
    "ok" : 0,
    "errmsg" : "error opening file \"/Users/data/db/_tmp/extsort.1651\": errno:24 Too many open files",
    "code" : 16818,
    "codeName" : "Location16818"
} : aggregate failed
_getErrorWithCode@src/mongo/shell/utils.js:25:13
doassert@src/mongo/shell/assert.js:16:14
assert.commandWorked@src/mongo/shell/assert.js:370:5
DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1319:5
@(shell):1:1
值得注意的是,我已经通过以下方式启动Mongo服务器,最大化了允许打开的文档数:

sudo ulimit -n 64000 && mongod

是否有任何方法可以解决此错误。还是有更好的方法来解析大型集合并删除重复项?

64000是mongodb群集的最低建议值,有什么原因不能使其变大吗?@Joe没有使其变大,因为据我所知,这是Mac OS允许的最大数量。您的ulimit设置不正确,没有任何作用。请阅读文档以了解正确的配置方法。