ジオローカライズされた一連のドキュメントがCouchDBにあります。つまり、次のような構造になっています。
{
_id: ...,
...
coords: {
lat: 45.204149214,
long: 40.284712972
}
}
それらを地図上に表示できるようにしたいと思います。これには、特定の正方形内のすべてのドキュメントを取得する必要があります。指定された間隔で経度を持つすべてのドキュメントを取得するのは簡単です。
// map function
function(doc) {
emit(doc.coords.long, doc.other_stuff);
}
次のようなクエリを使用する
// query
/path/to/view/?startkey=40&endkey=50
問題は、多次元制約を実行する方法がわからないことです。緯度が20〜30 、経度が40〜50のすべてのドキュメントを取得するにはどうすればよいですか?複数のキーを指定できるようですが、それまたは結果です。
1つのオプションは、クライアントでさらにフィルタリングを実行することですが、データのサイズを考えると、これは実行不可能な場合があります。
免責事項:SOについても同様の質問がいくつかあり、基本的にこれは不可能であると述べています。それらはすべて古くなっているように見えるので、CouchDBの最新リリースで何かが変更されたかどうかを知りたいと思います。