这似乎是一个常见的错误,但我似乎无法通过我看到的所有建议来解决。这是我的设置:
// point.js (based on mongoose recommended subdocument pattern for reusing the GeoJSON definition
// see here https://mongoosejs.com/docs/geojson.html)
const mongoose = require('mongoose');
const pointSchema = new mongoose.Schema({
type: {
type: String,
enum: ['Point'],
required: true
},
coordinates: {
type: [Number],
required: true,
}
});
exports = pointSchema;
// user.js
var schema = new Schema({
location: {
type: pointSchema,
},
...
});
schema.index({ location: '2dsphere' });
var User = mongoose.model('User', schema);
// routeHandler.js
const near = { type: 'Point', coordinates: [lng, lat] };
User.aggregate([
{ $geoNear: {
near,
distanceField: 'dist',
maxDistance: 100000,
spherical: true,
} },
...
]).exec((err, results) => {
console.log('error or results:', err, results);
});
我遇到了这个错误:
MongoError:无法确定查询系统是否可以提供覆盖投影 :: 造成原因 :: geo near在查询GeoJSON点时只接受一个参数。发现额外的字段:$maxDistance:100000.0
我看到的大多数讨论建议它是索引问题,但是你可以在user.js
中看到我直接调用了它。
schema.index({ location: '2dsphere' });
没有任何运气。
如果有任何建议,我将非常感激!谢谢!