Python mongodb-只需一个服务器实例即可处理海量数据

Python mongodb-只需一个服务器实例即可处理海量数据,python,mongodb,pymongo,Python,Mongodb,Pymongo,我试图在mongodb中处理大约一亿条记录。基本上,每个键(处方号)响应大约1300条记录(不是唯一的)。这些键已编入索引。 现在,我正在用pymongo查询特定的键,以返回这些结果集,这样就可以用python处理它们 质疑mongo是最大的瓶颈。每次查询大约需要20秒。按照目前的速度,查询每条记录需要400小时 这就是我“解释”我的查询时的样子: 这表明我已经准备好了索引 > db.prescriptions.getIndexes() [ { "v" : 1,

我试图在mongodb中处理大约一亿条记录。基本上,每个键(处方号)响应大约1300条记录(不是唯一的)。这些键已编入索引。

现在,我正在用pymongo查询特定的键,以返回这些结果集,这样就可以用python处理它们

质疑mongo是最大的瓶颈。每次查询大约需要20秒。按照目前的速度,查询每条记录需要400小时

这就是我“解释”我的查询时的样子:

这表明我已经准备好了索引

> db.prescriptions.getIndexes()
[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "ns" : "processed_data.prescriptions",
        "name" : "_id_"
    }
]
我试图在一个服务器实例上运行此数据处理,这是不是让我发疯了? (有趣的是,当我运行top时,我的CPU和RAM似乎没有达到最大值。)

如蒙指教,我将不胜感激

谢谢

添加索引 从查询中的解释结果来看,“key”上没有索引,您需要添加一个

> db.prescriptions.addIndex({'key': 1});

如果mongo报告了任何类型的警告,您需要对其采取行动

您的解释显示了完整的表扫描,没有使用索引。显示您创建的索引
db.prescriptions.getIndexes()
(将其添加到问题中)。另外,“基本上,每个键都有1300条自己的记录”意味着什么?这本身就没有意义。1300条记录响应一个键-它们不是唯一的。>db.prescriptions.getIndexes()[{“v”:1,“key”:{“id”:1},“ns”:“processed_data.prescriptions”,“name”:“_id”}]谢谢AD7six。我意识到,尽管使用python包装器运行ensureindex,但我从未收到通知我磁盘空间不足的警告。我要再添加一些磁盘空间,然后再试一次。我真的很感谢你的帮助:)
> db.prescriptions.addIndex({'key': 1});