使用 2d 索引,与 $geoNear 聚合

Posted

技术标签:

【中文标题】使用 2d 索引,与 $geoNear 聚合【英文标题】:Using 2d Indexes, in aggregate with $geoNear 【发布时间】:2016-07-03 13:17:00 【问题描述】:

我正在尝试将 geoNear 与聚合一起使用,但我收到此错误消息:

errmsg: "'near' field must be point"

因为我的位置字段是 [Number]:

var locationSchema = mongoose.Schema(
name            : String,
addressText     : String,
location    : [Number] // [<longitude>, <latitude>] 
);
module.exports = mongoose.model('Location', locationSchema );

我试图像这样聚合:

Location.aggregate([
            $geoNear: 
                near: type : "Point", "location": [ 48.2, 16.3 ],
                limit: 1000000,
                distanceField: "dist.calculated",
                includeLocs: "true",
                maxDistance: 10
            
        ])
        .exec()

我知道我必须添加我的位置type:"Point",但不幸的是为时已晚。我可以用其他方式解决这个问题吗?

【问题讨论】:

【参考方案1】:

尝试将聚合中的“位置”替换为“坐标”。

【讨论】:

以上是关于使用 2d 索引,与 $geoNear 聚合的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb geoNear 和组聚合

使用 geonear 的 Mongoose 聚合

MongoDB GeoNear 聚合

当查询字段为objectId时,geoNear聚合是不是不起作用?

MongoDB $geoNear 聚合管道(使用查询选项和使用 $match 管道操作)给出不同的结果

如何对嵌入式文档进行 $geoNear 聚合?