mongodb - 使用另一个文档的坐标进行附近查询
问题描述
我的收藏模型如下所示:
{
"_id": 1234,
"geometry": {
"type": "Point",
"coordinates": [3.6023, 51.00437]
}
}
我想以最大距离获取特定文档附近的所有文档。按照上面的示例,查询将使用 id 1234 来获取其附近的文档,在同一个集合内。
我尝试以多种方式进行此查询,我认为更接近的是使用此聚合管道:
[
{$match: {_id: 1234}},
{
$lookup: {
from: "my_collection",
let: {coordinates: "$geometry.coordinates"},
pipeline: [
{
$geoNear: {
key: "geometry",
near: "$$coordinates",
distanceField: "distance",
spherical: true,
maxDistance: 5000
}
}
],
"as": "nearby_documents"
}
}
]
但是对于我尝试过的所有事情,我总是得到同样的错误:“$geoNear 需要一个 'near' 选项作为数组”。
另一种方法是首先进行查询以获取 id 为 1234 的文档的坐标:
[{$match: {_id: 1234}}]
然后使用结果进行另一个查询以获取附近的文档:
[{$geoNear: {key: "geometry", near: [3.6023, 51.00437], distanceField: "distance", spherical: true}}]
有没有办法在一个查询中做到这一点?
解决方案
推荐阅读
- package - 安装 wxpython 的故障?
- sql - 如果公式值大于 20,则返回 20,否则返回公式值
- linux - Linux bash 上有没有办法突出显示在当前路径的最后 N 分钟内修改的所有文件
- java - Android应用程序在最小化然后打开后崩溃
- ios - 如何在swift 5中使用闭包在参数中传递函数
- javascript - js字符串到日期时间加2小时
- database-design - 实施销售退货表
- python - 我该如何解决:索引 0 超出轴 0 的范围,大小为 0
- apache-camel - 向 Apache Camel 中的现有 CSV 数据添加新列和行
- c - 程序打印 0 作为通过 scanf("%f") 获得的两个正整数相乘的结果