阅读前提: 代码的背景是本ID其他的博文: ip库的查询
其格式如下:
begin end 省 市
18533376,18534399,内蒙古自治区,呼伦贝尔市
简单的代码:
public static IpLocation getLocation(long iplong) { IpLocation iplocation = new IpLocation(); // 获取表的句柄 DBCollection collection = null; // 封装查询条件 BasicDBObject basicDBObject = null; try { collection = db.getCollection(Constant.ipBase); basicDBObject = new BasicDBObject(); // begin <= iplong <= end basicDBObject.put("begin", new BasicDBObject("$lte", iplong)); basicDBObject.put("end", new BasicDBObject("$gte", iplong)); List<DBObject> dbObjectList = collection.find(basicDBObject) .toArray(); iplocation.setProvince(dbObjectList.get(0).get("province") .toString()); iplocation.setCity(dbObjectList.get(0).get("city").toString()); } catch (Exception e) { p("查MixBoxIpBase库的过程之中出现了错误"); } return iplocation; }
在这里
basicDBObject.put("begin", new BasicDBObject("$lte", iplong)); lte:小于等于表示 begin 《= iplong basicDBObject.put("end", new BasicDBObject("$gte", iplong)); get: 大于等于表示 end 》= iplong 综合起来来看就是 begin < iplong < end, 细节方面请不要出现纰漏~