Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
$maxDistance
Amazon DocumentDB 中的$maxDistance运算符用于指定距离 GeoJSON 点的最大距离(以米为单位),文档必须在该距离之内才能包含在查询结果中。此运算符与运$nearSphere算符配合使用以执行地理空间查询。
参数
示例(MongoDB 外壳)
以下示例演示如何使用 Amazon DocumentDB 中的$maxDistance运算符来查找距离波士顿 100 千米范围内的所有州首府。
创建示例文档
db.capitals.insert([
{ state: "Massachusetts", city: "Boston", location: { type: "Point", coordinates: [-71.0589, 42.3601] } },
{ state: "Rhode Island", city: "Providence", location: { type: "Point", coordinates: [-71.4128, 41.8239] } },
{ state: "New Hampshire", city: "Concord", location: { type: "Point", coordinates: [-71.5383, 43.2067] } },
{ state: "Vermont", city: "Montpelier", location: { type: "Point", coordinates: [-72.5751, 44.2604] } }
]);
查询示例
db.capitals.find(
{
location: {
$nearSphere: {
$geometry: { type: "Point", coordinates: [-71.0589, 42.3601] },
$maxDistance: 100000
}
}
},
{ state: 1, city: 1, _id: 0 }
);
输出
[
{ "state": "Rhode Island", "city": "Providence" },
{ "state": "New Hampshire", "city": "Concord" }
]
代码示例
要查看使用该$maxDistance命令的代码示例,请选择要使用的语言的选项卡:
- Node.js
-
const { MongoClient } = require('mongodb');
async function findCapitalsNearBoston() {
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 capitals = db.collection('capitals');
const result = await capitals.find({
location: {
$nearSphere: {
$geometry: { type: "Point", coordinates: [-71.0589, 42.3601] },
$maxDistance: 100000
}
}
}, {
projection: { state: 1, city: 1, _id: 0 }
}).toArray();
console.log(result);
await client.close();
}
findCapitalsNearBoston();
- Python
-
from pymongo import MongoClient
def find_capitals_near_boston():
client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
db = client.test
capitals = db.capitals
result = list(capitals.find(
{
"location": {
"$nearSphere": {
"$geometry": { "type": "Point", "coordinates": [-71.0589, 42.3601] },
"$maxDistance": 100000
}
}
},
{"state": 1, "city": 1, "_id": 0}
))
print(result)
client.close()
find_capitals_near_boston()