2016-09-02 4 views
0

次のDocumentDB空間クエリから有効な結果を得ようとしています。 LINQまたはSQLの両方でDocumentDB空間距離クエリ - 空集合

-

SELECT * FROM root 
WHERE (ST_Distance(root["Address"]["Location"]["Queryable"], 
{"type": "Point", "coordinates": [-36.******, 174.******]}) < 10000) 

...および/または: - 空のセット

FeedOptions queryOptions = new FeedOptions { MaxItemCount = -1, EnableScanInQuery = true }; 
IQueryable<Store> documentQuery = client.CreateDocumentQuery<Store>(
UriFactory.CreateDocumentCollectionUri(this.databaseName, this.collection), queryOptions) 
.Where(s => s.Address.Location.Queryable.Distance(store.Address.Location.Queryable) < 10000); 

...両方のアプローチは私に同じ結果を与えます。

ただし、このクエリで解決する必要があるデータベースには2つの「ストア」ドキュメントがあります。

My DBインスタンスはオーストラリア東部にあります。これは明らかに問題ありません。

私はここで間違っていますか?マイコレクションには空間インデックスがありません - 必要ですか?

+0

「root ["Address"] ["Location"] ["Queryable"] 'はどのように見えますか? –

+0

クエリ可能:{タイプ:Point、 座標:[-36.908, 174.123 ] } – Bernard

答えて

0

GeoJSONでは、xが東西、yが南北の通常の期待値と一致するように[経度、緯度]でポイントが指定されます。残念ながら、これはGEOの座標を表示する伝統的な方法の反対です。

174.xxxは緯度の有効な値ではありません。緯度の範囲は-90〜+ 90です。経度は-180〜+180と指定されています。

座標を入れ替えると、期待どおりに動作するはずです。