Node.js MongoError:Can';t提取地理键

Node.js MongoError:Can';t提取地理键,node.js,mongodb,geonear,Node.js,Mongodb,Geonear,在后期数据更新期间,我面临一个mongoose错误。 错误是: MongoError:无法提取地理密钥 我试图通过在谷歌上搜索找到原因和解决方案,但仍然没有找到任何合适的解决方案 发布模型 const geoLocationSchema = new mongoose.Schema({ type: { type: String, default: 'Point'}, coordinates: { type: [Number], index: { ty

在后期数据更新期间,我面临一个mongoose错误。 错误是:

MongoError:无法提取地理密钥

我试图通过在谷歌上搜索找到原因和解决方案,但仍然没有找到任何合适的解决方案

发布模型

const geoLocationSchema = new mongoose.Schema({
    type: { type: String, default: 'Point'},
    coordinates: {
        type: [Number],
        index: { type: '2dsphere', sparse: false },
    }
});

const postsSchema = new mongoose.Schema({
    post_title: String,
    geoLocation: geoLocationSchema,
}, {
    timestamps: true
});
岗位控制员

const Posts = require("../models/Posts");

var findPattern = {_id: "5e8c661f274e8e57d8e03887"}; 
var updatePattern = {   geoLocation: {
    type: "Point",
    coordinates: [-8.4556973, 114.5110151] }
};

Posts.updateOne(findPattern, updatePattern) .then(updateRes => {
    console.log("post updated"); 
}).catch(err => {
    console.log("error", err.toString()); 
});
输出为:

MongoError:无法提取地理键:{u-id:ObjectId('5e8c661f274e8e57d8e03887'),地理位置:{type:'Point',坐标:[-8.45569730000001,114.5110151],{u-id:ObjectId('5e8d7f7c35b9d36d45b483a2')}无法将几何体投影到球形CRS:[-8.45569730000001,114.5110151]


名为“坐标”的字段,用于指定对象的坐标

如果指定纬度和经度坐标,请先列出经度,然后列出纬度:

有效的经度值介于-180和180之间(包括-180和180)。 有效纬度值介于-90和90之间(包括-90和90)

这意味着这需要在索引0处获取经度,在索引1处获取纬度


尝试
坐标:[114.5110151,-8.4556973]}

检查您的lat lang值,它们似乎超出范围。@mehta rohan lat long正确。是去印尼巴厘岛的。谢谢你,罗汉。我在代码中实现了它。我想问你的另一件事是,需要为纬度和经度实现任何其他类型的逻辑,正如你所说的,有效经度值介于-180和180之间,两者都包括在内。有效纬度值介于-90和90之间,两者都包括在内?如果您是从传感器中选取这些值,那么您不需要太担心,除非您可以进行简单的范围检查。