私は地理データへのIPを保持する4GBのmongodbデータベースを持っています。データは次のようになります。
{ "_id" : ObjectId("51d1c15d3a673a1a57f20251"), "IP_FROM" : NumberLong(1168612352), "IP_TO" : NumberLong(1168612607), "COUNTRY_CODE" : "US", "COUNTRY_NAME" : "UNITED STATES", "REGION" : "MICHIGAN", "CITY" : "LANSING", "LATITUDE" : 42.73328, "LONGITUDE" : -84.637765 }
データベースを照会する Java コードがあります。
BasicDBObject query = new BasicDBObject("IP_TO", new BasicDBObject("$gte", ipNum));
DBCursor cursor = ipCollection.find(query).limit(1);
try {
while (cursor.hasNext()) {
DBObject next = cursor.next();
latitude = (Double) next.get("LATITUDE");
longitude = (Double) next.get("LONGITUDE");
System.out.println("LATITUTDE: " +latitude+" LONGITUDE: "+ longitude);
break;
}
} finally {
cursor.close();
}
db.currentOp を実行すると、次のようになります。
"query" : {
"IP_TO" : {
"$gte" : NumberLong(1625798904)
}
}
これは長すぎます。このクエリを高速化する方法はありますか?