翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
$geoIntersects
Amazon DocumentDB の $geoIntersects演算子は、地理空間データが指定された GeoJSON オブジェクトと交差するドキュメントを検索するために使用されます。この演算子は、ポリゴンやマルチポリゴンなど、特定の地理的形状との空間関係に基づいてドキュメントを識別する必要があるアプリケーションに役立ちます。
パラメータ
例 (MongoDB シェル)
次の例は、 $geoIntersects演算子を使用して Amazon DocumentDB 内の特定の座標セットの状態名を検索する方法を示しています。
サンプルドキュメントを作成する
db.states.insertMany([
{
"name": "New York",
"loc": {
"type": "Polygon",
"coordinates": [[
[-74.25909423828125, 40.47556838210948],
[-73.70819091796875, 40.47556838210948],
[-73.70819091796875, 41.31342607582222],
[-74.25909423828125, 41.31342607582222],
[-74.25909423828125, 40.47556838210948]
]]
}
},
{
"name": "California",
"loc": {
"type": "Polygon",
"coordinates": [[
[-124.4091796875, 32.56456771381587],
[-114.5458984375, 32.56456771381587],
[-114.5458984375, 42.00964153424558],
[-124.4091796875, 42.00964153424558],
[-124.4091796875, 32.56456771381587]
]]
}
}
]);
クエリの例
var location = [-73.965355, 40.782865];
db.states.find({
"loc": {
"$geoIntersects": {
"$geometry": {
"type": "Point",
"coordinates": location
}
}
}
}, {
"name": 1
});
出力
{ "_id" : ObjectId("536b0a143004b15885c91a2c"), "name" : "New York" }
コードの例
$geoIntersects コマンドを使用するコード例を表示するには、使用する言語のタブを選択します。
- Node.js
-
const { MongoClient } = require('mongodb');
async function findStateByGeoIntersects(longitude, latitude) {
const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
const db = client.db('test');
const collection = db.collection('states');
const query = {
loc: {
$geoIntersects: {
$geometry: {
type: 'Point',
coordinates: [longitude, latitude]
}
}
}
};
const projection = {
_id: 0,
name: 1
};
const document = await collection.findOne(query, { projection });
await client.close();
if (document) {
return document.name;
} else {
throw new Error('The geo location you entered was not found in the United States!');
}
}
- Python
-
from pymongo import MongoClient
def find_state_by_geointersects(longitude, latitude):
try:
client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client.test
collection_states = db.states
query_geointersects = {
"loc": {
"$geoIntersects": {
"$geometry": {
"type": "Point",
"coordinates": [longitude, latitude]
}
}
}
}
document = collection_states.find_one(query_geointersects,
projection={
"_id": 0,
"name": 1
})
if document is not None:
state_name = document['name']
return state_name
else:
raise Exception("The geo location you entered was not found in the United States!")
except Exception as e:
print('Exception in geoIntersects: {}'.format(e))
raise
finally:
if client is not None:
client.close()