Mongodb 范围内Lat/Lng的Mongoose查询

Mongodb 范围内Lat/Lng的Mongoose查询,mongodb,mongoose,geojson,Mongodb,Mongoose,Geojson,我试图查询给定lat/lng范围内的数据点。你能像我所做的('location.lat')和('location.long')一样在mongoose查询中引用对象的元素吗?如果是这样,我不会从这个查询中得到任何数据。我正在查询所有数据点,这很好——现在我只是尝试将查询细化到给定范围内的点 编辑 查询具有新格式的点(请参见下面更新的架构): 但我得到了: error: { "$err" : "Malformed geo query: { $geoWithin: { $geometry: {

我试图查询给定lat/lng范围内的数据点。你能像我所做的('location.lat')和('location.long')一样在mongoose查询中引用对象的元素吗?如果是这样,我不会从这个查询中得到任何数据。我正在查询所有数据点,这很好——现在我只是尝试将查询细化到给定范围内的点

编辑

查询具有新格式的点(请参见下面更新的架构):

但我得到了:

error: {
    "$err" : "Malformed geo query: { $geoWithin: { $geometry: { type: \"Polygon\", coordinates: [ [ [ -113.5152685, 53.24204911518776 ], [ -131.0933935, 53.24204911518776 ], [ -131.0933935, 41.39721582688674 ], [ -113.5152685, 41.39721582688674 ] ] ] } } }",
    "code" : 16677
}
注意:范围参数如下所示:

更新的模式

var mongoose = require('mongoose');

var dataPointSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    geo: {type: [Number], index: '2d'},
    ...
    timestamp: {type: Date, default: Date.now}
    ...
});
如图所示:


必须通过使第一个点和最后一个点相同来闭合多边形。

这是什么版本?你有位置索引吗?您可以使用MongoDB的地理空间功能,但它希望数据以相反的顺序存储:long,lat.v2.4.8-我开始研究mongo地理空间点-因此模式只需将位置切换到{long:Number,lat:Numer}或{type:[Number],索引:'2d'}。多边形的第一个点和最后一个点必须相同(您必须关闭多边形。(我在此处找到此点:)抱歉,忘了这样做:)我想使用body.req使用此范围从前端获取坐标。我该怎么做?任何形式的帮助都将不胜感激。
var mongoose = require('mongoose');

var dataPointSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    geo: {type: [Number], index: '2d'},
    ...
    timestamp: {type: Date, default: Date.now}
    ...
});