私の検索座標と私が探しているフィールドとの距離を返したいと思います。彼らは、次の例のクエリを使用 https://www.documentdb.com/sql/demo#geospatialDocumentDB - クエリのSELECT部分で距離を返すにはどうすればよいですか?
:
-- Find all volcanoes of type Stratovolcano
-- (http://www.sciencedaily.com/terms/stratovolcano.htm)
-- that are within 100 km of Redmond, WA.
SELECT *
FROM volcanoes v
WHERE ST_DISTANCE(v.Location, {
"type": "Point",
"coordinates": [-122.19, 47.36]
}) < 100 * 1000
AND v.Type = "Stratovolcano"
AND v["Last Known Eruption"] = "Last known eruption from 1800-1899, inclusive"
をそして、彼らは次のような結果を得る:
{
"Volcano Name": "Rainier",
"Country": "United States",
"Region": "US-Washington",
"Location": {
"type": "Point",
"coordinates": [
-121.758,
46.87
]
},
"Elevation": 4392,
"Type": "Stratovolcano",
"Status": "Dendrochronology",
"Last Known Eruption": "Last known eruption from 1800-1899, inclusive",
"id": "33eff74b-e331-bca5-bf32-f8ece733465a",
"_rid": "FX8tANMM6QEeBAAAAAAAAA==",
"_ts": 1438994836,
"_self": "dbs/FX8tAA==/colls/FX8tANMM6QE=/docs/FX8tANMM6QEeBAAAAAAAAA==/",
"_etag": "\"00008304-0000-0000-0000-55c551940000\"",
"_attachments": "attachments/"
}
を
例として、あなたはこの "クエリの遊び場" を使用することができます
私は、距離を火山([-121.758, 46.87]
)と検索座標の間のメートルで戻したいとします、
-- Find all volcanoes of type Stratovolcano
-- (http://www.sciencedaily.com/terms/stratovolcano.htm)
-- that are within 100 km of Redmond, WA.
SELECT *, ST_DISTANCE(v.Location, {
"type": "Point",
"coordinates": [-122.19, 47.36]
})
FROM volcanoes v
WHERE ST_DISTANCE(v.Location, {
"type": "Point",
"coordinates": [-122.19, 47.36]
}) < 100 * 1000
AND v.Type = "Stratovolcano"
AND v["Last Known Eruption"] = "Last known eruption from 1800-1899, inclusive"
しかし動作しないこと:私の中[-122.19, 47.36]
T-SQLの開発者は、私はちょうどWHERE
句から全体ST_DISTANCE
ビットを取り、そしてこのようなSELECT
と一緒にそれを含めることができますと言いますそれはちょうど私の構文エラーを与える:
{
"errors": [
{
"severity": "Error",
"location": {
"start": 153,
"end": 154
},
"code": "SC1001",
"message": "Syntax error, incorrect syntax near ','."
}
]
}
私はAS
でST_DISTANCE
の結果をエイリアシング、v.*
のように、物事の範囲を試してみたが、私はありませんよどこにいてもGoogleで必要なものを見つけることができません。
私は何をする必要がありますか?私にとっては、特定の距離内でクエリを行うことは非常に重要ですが、クライアント側のすべての距離を再計算する必要がある場合は、限られた使用になります。
私は*が異なる理由を説明するためにあなたの答えを編集しました。それを回答としてマークしていただけますか? –