javascript - Mongoose 在坐标上抛出错误值

标签 javascript node.js mongodb mongoose

我有以下架构:

module.exports = function (mongoose) {
    var Location = mongoose.Schema({
        street: String,
        number: String,
        zip: String,
        floor: String,
        rental: String,
        size: Number,
        loc: {
            type: {type: String},
            coordinates: []
        },
        updated: {type: Date, default: Date.now}
    });

    return mongoose.model('Location', Location);
};

我正在尝试通过以下方式查询数据:

mongoose.models.Location.find({
    loc: {
        $near: [55.69841959999999,12.5443359],
        $maxDistance: 2000
    }
}, function (err, doc) {
    res.json(doc);
});

但是我收到一条错误消息:

> error processing query: ns=RentalDB.locationsTree: GEONEAR  field=loc maxdist=2000 isNearSphere=0
Sort: {}
Proj: {}
 planner returned error: unable to find index for $geoNear query

谁能告诉我我做错了什么?

最佳答案

存储时您的地理数据应采用正确的格式。

坐标是数字而不是字符串

引用:https://docs.mongodb.com/manual/geospatial-queries/#legacy-coordinate-pairs

关于javascript - Mongoose 在坐标上抛出错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46075204/

相关文章:

Javascript获取两个符号之间的字符串

Javascript 警报功能不起作用

node.js - 在 docker 容器中构建 NodeJS webpack

mongodb:UnknownError 断言 src/mongo/db/server_options_helpers.cpp:355

mongodb - 使用 CNAME 记录使用 mongoDB atlas 创建自定义域

javascript - 模糊 body 中除一个元素外的所有元素

javascript - 我如何使用 Javascript 获取所有子项(即子项的子项)?

javascript - 未找到此依赖项 : *swiper/vue how to fix?

javascript - 处理 JavaScript 中的异步行为?

java - 未找到能够将 GeoCommand 转换为 DBObject 的转换器