现在我使用地理空间数据进行Moongose查询:
Locations.find({
loc: {
$geoWithin: {
$centerSphere: [[lng, lat], radius / 6378.1],
},
}
}, cb);
它运行良好,但我的问题是如何获取所有Location
文档,其中每个文档都有一个布尔变量,显示该特定文档是否在where子句的指定循环内。
答案 0 :(得分:0)
您可以使用聚合$project
阶段执行类似的操作,将条件投影为结果文档中的附加字段。遗憾的是,没有为聚合框架定义GeoSpatial运算符,因此您无法在单个MongoDB查询中实现目标。
如果您可以进行两个查询,可以尝试以下选项:
db.locations.aggregate([
{$match: {
loc: {
$geoWithin: {
$centerSphere: [[lng, lat], radius / 6378.1],
},
}
}
},
{$project:
{
...
// all of your fields
...
isWithin: true
}
}
])
反过来做同样的事情,以匹配不在其中的文档,并将isWithin
设置为false
。这将人为地为您提供所需的结果。