Tôi đang tìm vấn đề trong việc xác định chỉ mục không gian địa lý '2d' như được hiển thị bên dưới. Bất kỳ đầu mối như những gì đang xảy ra sai?Chỉ mục không gian địa lý trong mongodb với node.js
var Address = new Schema({
loc : {lat: Number, lng: Number },
Address : String,
create_date : {type: Date, default: Date.now}
});
Address.index ({
loc : "2d"
});
Nó ném lỗi như,
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)
EDIT: Bổ sung chứng
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)
})
Có vẻ như bạn cũng đang sử dụng Mongoose. Bạn có một đối tượng/truy vấn thực tế mà bạn đang thực hiện không? Vấn đề có thể là trong trình điều khiển Node, nó có thể là trong Mongoose hoặc nó có thể được trong mã, vì vậy chúng tôi cần thêm một chút để tiếp tục. –
Có, bạn đã đúng. Tôi đang sử dụng mongoose. Tôi đã chỉnh sửa câu hỏi ở trên và thêm mã. lưu đang diễn ra đúng cách. Khi tôi tìm thấy nó phàn nàn về chỉ mục và khi tôi thêm chỉ mục, nó nói, "điểm không nằm trong phạm vi" – user644745
Vâng, tôi đã thay đổi tên thuộc tính từ vị trí thành "vị trí" và thay đổi "2d" thành '2d' và có vẻ như , Nó đang làm việc bây giờ. Điều này thật kỳ lạ. – user644745