mongodb - mongoDB地理空间查询不起作用
问题描述
我正在尝试提取多边形(规则或不规则)内的所有元素,但 mongoDB 地理空间不起作用。
当我像这样进行查询时,效果很好
db.getCollection('houses').find({
'coordinates_geojson.coordinates.1': {
'$lte': 20.49584842128357,
'$gte': 20.458539491985142
},
'coordinates_geojson.coordinates.0': {
'$lte': -103.4088134765625,
'$gte': -103.47747802734375
}
})
但如果尝试使用 查询geoWithin
,则不会返回任何内容
db.getCollection('houses').find({
"coordinates_geojson": {
"$geoWithin": {
"$geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[
-103.47747802734375,
20.458539491985142
],
[
-103.4088134765625,
20.458539491985142
],
[
-103.4088134765625,
20.49584842128357
],
[
-103.47747802734375,
20.49584842128357
],
[
-103.47747802734375,
20.458539491985142
]
]
]
]
}
}
}
})
欢迎任何帮助或想法
解决方案
这是正确的答案,首先取消设置字段coordinates_geojson.deviation_level
,然后建立索引db.collection.createIndex({"coordinates_geojson" : "2dsphere" })
。
谢谢@B.Fleming
推荐阅读
- python - 如何使用 Azure AD 对我的 python Web 应用程序的使用进行身份验证和授权?
- java - Jedis - 缺少简单程序的 HostPort 类
- php - 将图像添加到带有表单域的 PDF
- c# - 在一页布局中动态创建 3 个不同的表格
- angular-material - 使用 Angular Material 项目的富文本策略
- html - XSL:无法根据条件将值填充到 HTML
- php - 如何解决这个模棱两可的问题?
- typescript - 使用可区分的联合类型而不是可选属性
- c - Windows 10/mingw-w64 编译器上 size_t 的最大大小
- laravel - 定义列名时的错误请求