MongoDb $附近和查询

时间:2014-11-24 15:45:21

标签: mongodb geospatial 2dsphere

我的结构文件集合如下

{ _id: ObjectId("54723e44ec73a702fc979fc9"), 
    Start: { type: "Point", coordinates: [ -0.15261409999993703, 51.4428311 ] }, 
    End: { type: "Point", coordinates: [ -0.1258020000000215, 51.44695 ] } 
}

我正在运行以下查询以尝试查找文档,其中起点是一个点的2000个单位,结尾是一个点的1个单位。

"Start" : 
     { "$near" : 
          { "$geometry" : 
             { "type" : "Point", 
                   "coordinates" : [-0.12580200000002151, 51.44695]
              }
          },
      "$maxDistance" : 2000.0 
 }, 
 "End" : 
    { "$near" : 
         { "$geometry" : 
             { "type" : "Point", 
                    "coordinates" : [-0.12580200000002151, 51.44695]
             }
         },
      "$maxDistance" : 1.0 
    } 

当我运行查询时,它总是返回文档,就好像它正在执行或。因此,从一个点OR结束开始是x个单位是从一个点开始的x个单位。因此,如果我在以下两个文档上运行它,它将返回我只希望返回第一个文档的位置。

{ _id: ObjectId("54723e44ec73a702fc979fc9"), 
  Start: { type: "Point", coordinates: [ -0.15261409999993703, 51.4428311 ] }, 
  End: { type: "Point", coordinates: [ -0.1258020000000215, 51.44695 ] }
}
{ _id: ObjectId("54724f0cec73a70c383a27d4"), 
  Start: { type: "Point", coordinates: [ -0.15261409999993703, 51.4428311 ] }, 
  End: { type: "Point", coordinates: [ -0.09553900000003068, 51.427025 ] } 
}

我相信我应该能够像

那样做

http://blog.mongodb.org/post/50984169045/new-geo-features-in-mongodb-2-4

"此外,我们可以在同一个复合索引中包含多个2dsphere索引。这允许查询如下:“查找距离JFK 50英里内的起始位置的路线,以及距离YYC 100英里内的终点位置”。"

澄清。上面显示的查询应该在START位置$ near点和END位置$ near点附近进行AND查询。但它实际上似乎正在做的是START位置$接近点或END位置$接近点。

如何在单个文档中对两个$ near查询进行AND查询?

0 个答案:

没有答案