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(即startend)的位置进行搜索时,我能够得到结果。这就是我确定问题出在$or 的方式。

mongoDB/mongoose 是否支持使用$or 进行地理空间搜索,还是我做错了什么?

【问题讨论】:

【参考方案1】:

$or 似乎不起作用,所以我现在选择运行 2 个查询,然后评估每个查询的结果以返回计数。它对我有用,因为我不需要实际计数,但我需要知道在每个点的一定距离内是否有任何可用位置。

如果有人遇到类似问题,并使用此方法作为解决方法,请记住将第二个查询嵌套在第一个查询的回调中。当您要查询的位置超过 2 个时,这显然会更成问题。

【讨论】:

您有没有找到一个解决方案来使用多个可选位置进行单个地理搜索?我遇到了类似的问题。 我真的不记得我最后做了什么。我查看了我的代码库,并没有看到$or 的踪迹,所以我肯定找到了一种解决方法。 Mongo 206 现在支持将$or 与地理位置数据结合使用

以上是关于Mongoosejs:将 query.or() 与地理空间查询一起使用的主要内容,如果未能解决你的问题,请参考以下文章

MongooseJS - 限制子文档中的文档数量

await 仅在异步函数中有效 - 使用 mongoosejs exec() 时

mongoosejs ??????

MongooseJS - ????????????

? MongooseJS ????????????

MongooseJS 无法禁用字段独有