gpt4 book ai didi

node.js - 带有node.js的mongodb中的地理空间索引

转载 作者:IT老高 更新时间:2023-10-28 23:20:47 26 4
gpt4 key购买 nike

我在定义地理空间索引“2d”时发现问题,如图所示以下。关于出了什么问题的任何线索?

var Address = new Schema({
loc : {lat: Number, lng: Number },
Address : String,
create_date : {type: Date, default: Date.now}
});
Address.index ({
loc : "2d"
});

它会抛出类似的错误,

events.js:45 throw arguments[1]; // Unhandled 'error' event ^ Error: point not in range at [object Object]. (/cygdrive/c/Personal/software/ nodejs/NODE/no de_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:503:20)

编辑:添加代码

var Address = new Schema({
type : {type: String, enum: ['Apartment', 'House', 'Serviced Apartment'], default: 'Apartment'},
loc : {lat: Number, lng: Number },
Address : String,
create_date : {type: Date, default: Date.now}
});

/*
Address.index ({
loc : "2d"
});
*/

mongoose.connect('mongodb://127.0.0.1:27017/test123', function(err) {
if (err) {
console.log("error in mongo connection");
throw err;
}
console.log("connected to mongo");
});

var RentModel = mongoose.model('Rent', Address);



socket = io.listen(app);

socket.sockets.on('connection', function(client){

console.log('inside on connection');

client.on('register', function(msg){
console.log("msg.geometry.type", msg.geometry.type);

var rent = new RentModel();
rent.type = 'Apartment';
rent.loc.lat = 23;
rent.loc.lng = 56;
rent.Address = "LLLLLLLLIIIIIIIOOOOOOONNNNNNNN"

console.log("before save");
rent.save(function(err){
console.log("rent.save start");
if(err) {
throw err;
console.log("error in save");
}
console.log("saved");

});

});


RentModel.find({loc : { $near : [20, 50], $maxDistance: 30 }} , function(err, docs){
if (err) {
console.log("error in finding near", err);
throw err;
}
console.log('docs.length : ' , docs.length);
console.log('docs : ',docs)
})

最佳答案

还值得注意的是,您希望在数组中经度位于纬度之前。这在您使用 2D 时不会影响您,但在您使用 3D 时会影响。从数学上讲,这是有道理的,因为经度是 X 坐标,纬度是 Y 坐标 (x,y),但我们大多数人都熟悉 lat 很快就会出现(并且最好的 Mongo 书籍之一有一个 lat before long 的例子,但不包括二维)。

最终您可能会想要使用 3D,因为当您远离赤道时,2D 计算并不准确。


更新:2015-12-08以上不再相关 - 请参阅更新的答案/API 文档

关于node.js - 带有node.js的mongodb中的地理空间索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7347686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com