Mongoosejs:将 query.or() 与地理空间查询一起使用
Posted
技术标签:
【中文标题】Mongoosejs:将 query.or() 与地理空间查询一起使用【英文标题】:Mongoosejs: using query.or() with geospatial query 【发布时间】:2012-11-29 21:32:24 【问题描述】:我有一个查询应该执行以下操作: 获取两组坐标并返回任何坐标附近的位置。
我正在使用 Mongoose.js 开发 Node.js。
原始查询代码如下(在我尝试使用query.or()
语法之前:
query.or([geoNear: "loc", near: start, spherical: true,geoNear: "loc", near: end]);
问题似乎是使用$or
,因为我最初尝试的代码为:
that.count(
_cat: _cat ,
$or: [
loc: $nearSphere: start
,
loc: $nearSphere: end
], function(err, c)
// do something
);
当我使用没有$or
(即start
或end
)的位置进行搜索时,我能够得到结果。这就是我确定问题出在$or
的方式。
mongoDB/mongoose 是否支持使用$or
进行地理空间搜索,还是我做错了什么?
【问题讨论】:
【参考方案1】:$or
似乎不起作用,所以我现在选择运行 2 个查询,然后评估每个查询的结果以返回计数。它对我有用,因为我不需要实际计数,但我需要知道在每个点的一定距离内是否有任何可用位置。
如果有人遇到类似问题,并使用此方法作为解决方法,请记住将第二个查询嵌套在第一个查询的回调中。当您要查询的位置超过 2 个时,这显然会更成问题。
【讨论】:
您有没有找到一个解决方案来使用多个可选位置进行单个地理搜索?我遇到了类似的问题。 我真的不记得我最后做了什么。我查看了我的代码库,并没有看到$or
的踪迹,所以我肯定找到了一种解决方法。 Mongo 206 现在支持将$or
与地理位置数据结合使用以上是关于Mongoosejs:将 query.or() 与地理空间查询一起使用的主要内容,如果未能解决你的问题,请参考以下文章