我已将http://www.maxmind.com/en/city(GeoIP City)导入 MongoDB。有两个集合:块和位置。
块具有 ip 范围的开头和 ip 范围的结尾以及一个整数(稍后将使其成为 MongoID),指示位置集合中的文档。
ip 地址在 blocks 集合中存储为 NumberLong。
我得到一个 ip 地址并使用 php 函数 iptolong ( http://php.net/manual/en/function.ip2long.php ) 将其转换为 long ,给我一个像 3758096128 这样的值
现在我需要进行查询,从 blocks 集合中的正确文档中获取 id,然后在 location 集合中查找位置(在 id 的帮助下)
我可以明显地进行两个查询,但这不是很有效。
我的第一步是(在 PHP 中):
$query = array(
'startIpNum' => array('$gte' => $ipLong),
'endIpNum' => array('$lte' => $ipLong),
);
(仍在弄清楚为什么上面的查询不返回任何数据)
但是,从两个集合中获取数据的过程的下一步是什么?