![](/img/trans.png)
[英]Node.js, MongoDB - Mongoose - calculate average as part of GEO search
[英]Geo spatial index in mongodb with node.js
我發現定義地理空間索引'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]; //未處理的'錯誤'事件^錯誤: 指向不在 [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的例子不久,但它不包括2D)。
最終你可能會想要使用3D,因為當你離開赤道時,2D計算並不准確。
更新:2015-12-08以上不再相關 - 請參閱更新的答案/ API文檔
你可能想要一些關於如何做的參考:)以及對於那些追隨的人。 為了以防萬一,有人感興趣
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.