2017-04-20 62 views
0

我想從數據庫中使用geoNear在Moongose中獲得結果,但它給「無法獲得查詢執行器」錯誤。MongoError:無法獲取與geoNear Mongoose的查詢執行器


 
// Schema 
 
let dealSchema = new Schema({ 
 
userId: {type: String, required: true}, 
 
images: {type: [String], required: true}, 
 
location: { 
 
    lng: {type: Number}, 
 
    lat: {type: Number}, 
 
    name: {type: String, required: true} 
 
}, 
 
description: {type: String, required: false, default: ""}, 
 
expiredReports: {type: [String], required: false}, 
 
inappropriateReports: {type: [String], required: false}, 
 
likes: {type: [String], required: false}, 
 
dislikes: {type: [String], required: false}, 
 
comments: {type: [commentSchema], required: false}, 
 
creationDate: {type: Date, default: new Date()}, 
 
updationDate: {type: Date, default: new Date()} 
 
}, {collection: TableName.DEAL}); 
 

 

 
function getAll(radius) { 
 
var point = {type: "Point", coordinates: [9, 9]}; 
 

 
     let distance = parseInt(radius); 
 
     if (isNaN(distance)) { 
 
      return callback(new Error("Invalid Radius"), null) 
 
     } 
 

 
     var geoOptions = { 
 
      spherical: true, 
 
      maxDistance: distance, 
 
      num: 10 
 
     }; 
 

 
     DealData.geoNear(point, geoOptions, function (err, docs, stats) { 
 
       console.log(docs); 
 
      } 
 
     ); 
 
    
 
}

這是我的貓鼬的模型和我的代碼從數據庫中獲取數據。

回答

0

geoNear方法需要2dsphere索引,創建該索引後,您將能夠通過coords查詢數據。

實施例:

var mySchema = new mongoose.Schema({ 
    name: {type: String, required: true}, 
    location: {type: [Number], index: '2dsphere'} 
    }); 

位置字段的第一項是經度和第二個是緯度

+0

非常感謝@Artem – user3768061