Mongoosejs:将query.or()与地理空间查询一起使用

时间:2012-12-12 08:07:09

标签: mongoose geospatial mongodb-query

我有一个查询应该执行以下操作: 取两组坐标并返回任何坐标附近的位置。

我正在使用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 个答案:

答案 0 :(得分:0)

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

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