1

我已将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),
    );

(仍在弄清楚为什么上面的查询不返回任何数据)

但是,从两个集合中获取数据的过程的下一步是什么?

4

0 回答 0