[MongoDB]1.8→2.0から地理系Pointが厳密に値チェックされる
MongoDBを使用したプログラムのサーバーが壊れてしまったので、
サーバーの再構築を手伝ったのですが、
aptitudeで入れたMongoDBから不思議なエラーが返ってきてた
「point (35.1,136.2) must be in earth-like bounds of long : [-180, 180), lat : [-90, 90] 」
どうやらプログラムで緯度経度を逆転して取り扱っていたらしい。
以前はMongoDB 1.8で動いていたが、2.0になってからこのエラーが発生した。
MongoDBのgitのプログラムを見てみると、たしかにエラーチェック関数が2.0から追加されている。
@see https://github.com/mongodb/mongo/blob/master/src/mongo/db/geo/core.h#L509
まぁ、緯度経度逆転して扱っているプログラムが悪いんだけどさ。
急ぎの復旧だったので、MongoDBのデータベースを全消去してから
「mongodb18-10gen」でMongoDB 1.8をインストールしなおしたら、動くようになりました。
※MongoDB 2.0のデータベースをそのまま1.8で取り扱おうとしても、DB(かindex)のバージョンが新しいというエラーか警告がでるので、
DBもしっかりダウングレードしましょう。