【发布时间】:2015-09-10 12:00:36
【问题描述】:
我有一个小型数据库,其中包含手动添加的地点,我正在尝试按 minDistance 和 maxDistance 过滤它们。
这就是猫鼬模式
var schema = new Schema({
name: {
type: String,
unique: false,
required: true
},
location: {
type: [Number], // [<longitude>, <latitude>]
index: '2dsphere', // create the geospatial index
required: false // true senare
}
});
这是获取附近地点的方法:
schema.statics.getNearby = function (longitude, latitude, minDistance, maxDistance, callback) {
if ((longitude || latitude) === undefined) return new ModelError("location or radius is missing");
var Places = this;
var point = { type: "Point", coordinates: [ longitude, latitude]};
Places.geoNear(point, { minDistance: minDistance, maxDistance : maxDistance},
function(err, activities, stats) {
if (err) return callback(err);
callback(null, activities);
});
};
这是我执行此方法时得到的错误代码:
500 Error
at Error.MongoError (/home/ec2-user/bored_server/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:13:17)
at Function.MongoError.create (/home/ec2-user/bored_server/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11)
at /home/ec2-user/bored_server/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:768:66
at Callbacks.emit (/home/ec2-user/bored_server/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:84:3)
at null.messageHandler (/home/ec2-user/bored_server/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:218:23)
at Socket.<anonymous> (/home/ec2-user/bored_server/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:259:22)
at Socket.emit (events.js:95:17)
at Socket.<anonymous> (_stream_readable.js:765:14)
at Socket.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:427:10)
让我烦恼的是,我可以使用 mongodb 进行这样的查询,而且效果很好。
db.places.find({
location: {
$nearSphere : {
$geometry: {
type: "Point",
coordinates: [ 18, 58] },
$minDistance: 0,
$maxDistance: 1000000
}
}
}
)
编辑1: 他的解决方案是他应该以米为单位指定 maxDistance 值,我看不出这对我有什么帮助,因为无论我指定什么值作为 maxdistance,我都会得到一个错误。谢谢
【问题讨论】:
-
我没有发现这有帮助,没有解决我的错误。
标签: javascript node.js mongodb mongoose nosql