我试图用Python迭代大型Mongodb数据库的所有元素
通常,我会:
mgclient = MongoClient('mongodb://user:pwd@0.0.0.0:27017')
mgdb = mgclient['mongo']
mgcol = mgdb['name']
for mg_ob in mgcol.find().sort('Date').sort('time'):
#DOTHINGS
但是它说“排序操作使用的内存超过了最大的33554432字节。添加索引,或指定较小的限制”
所以我创建了一个名为“SortedTime”的索引,但我不知道现在如何使用它
基本上,我想做的是:
mgclient = MongoClient('mongodb://user:pwd@0.0.0.0:27017')
mgdb = mgclient['mongo']
mgcol = mgdb['name']
for mg_ob in mgcol.find()['SortedTime']:
#DOTHINGS
有什么想法吗?多谢你帮忙
我希望这篇文章能帮助别人。非常感谢
更新: 多亏了乔,我才成功。创建索引后:
resp = mgcol.create_index(
[
("date", 1),
("time", 1)
]
)
print ("index response:", resp)
我所做的只是:
mgclient = MongoClient('mongodb://user:pwd@0.0.0.0:27017')
mgdb = mgclient['mongo']
mgcol = mgdb['name']
for mg_ob in mgcol.find():
#DOTHINGS
不需要使用索引名
您的查询按2个字段进行排序,
Date
和time
,因此您需要一个索引,该索引首先包含键规范中的这些字段使用mongo shell时,可以使用createIndexshell助手:
在客户端工作时,可以使用createIndexes数据库命令
一旦创建了索引,就可以像以前一样进行查询,mongod的查询执行器应该使用该索引
您可以使用explain()获得详细的查询执行阶段,以查看考虑了哪些索引以及每个索引的比较性能
相关问题 更多 >
编程相关推荐