http://www.maxmind.com/en/city (GeoIP City) を MongoDB にインポートしました。ブロックとロケーションの 2 つのコレクションがあります。
ブロックには、IP 範囲の開始と IP 範囲の終了、およびロケーション コレクション内のドキュメントを示す整数 (後でこれを MongoID にします) があります。
IP アドレスはブロック コレクションに NumberLong として格納されます。
IP アドレスを取得し、php 関数 iptolong ( http://php.net/manual/en/function.ip2long.php ) でlong に変換すると、3758096128 のような値が得られます。
ここで、ブロック コレクション内の正しいドキュメントから ID を取得し、(ID を使用して) ロケーション コレクション内のロケーションを検索するクエリを作成する必要があります。
明らかに 2 つのクエリを作成できますが、これはあまり効率的ではありません。
私の最初のステップは(PHPで)のようなものです:
$query = array(
'startIpNum' => array('$gte' => $ipLong),
'endIpNum' => array('$lte' => $ipLong),
);
(上記のクエリがデータを返さない理由をまだ理解しています)
しかし、2 つのコレクションからデータを取得するプロセスの次のステップは何でしょうか?