python课上需要实现对经度和纬度进行排序,并筛选数据。
由于给出的数据很大,有1200W吧,而mongodb只能支持32MB的排序。。。
上网上搜了一下,决定创建索引,创建完索引之后就直接对数据进行排序了。
这里贴一下实验的数据类型:
这里用的pyhton连接mongdb创建索引。
代码如下:
import pymongo
from pymongo import ASCENDING, DESCENDING
#连接mongodb
client = pymongo.MongoClient('localhost',27017)
#连接数据库
olddb=client['Finally']
#找到要操作的表的索引
mycol=olddb['qucenter']
fincenter=olddb['finqucenter']
mycol.create_index([("longitude", ASCENDING), ("latitude", ASCENDING)])
网上给出的代码都不对啊,有木有,找了好久才找到一个没毛病的。。
创建完之后可以通过 .getIndexes()进行查看索引。
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "Finally.qucenter"
},
{
"v" : 2,
"key" : {
"longitude" : 1,
"latitude" : 1
},
"name" : "longitude_1_latitude_1",
"ns" : "Finally.qucenter"
}
]
创建的索引如上:
可以看到,有两个,一个是我自己创建的一个是系统自带的id号。
之后就是排序操作了,按照关键字进行排序,这次不会报内存错误了。
代码如下:
mydoc = mycol.find().sort([("longitude",ASCENDING),("latitude",ASCENDING)])
以上就是创建索引并排序的过程。