1

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 つのコレクションからデータを取得するプロセスの次のステップは何でしょうか?

4

0 に答える 0