mongodb和geoWithin

下面的search没有任何问题,但是当我改变searchtypes寻求一个多边形内的位置它是失去了,将不得不作出一些调整在search? 我做了一些尝试将发布在下面

db.geom.insert({"polygons": {"type":"Polygon", coordinates: [[[ 17.60083012593064, 78.18557739257812], [ 17.16834652544664, 78.19381713867188], [ 17.17490690610013, 78.739013671875], [ 17.613919673106714, 78.73489379882812], [ 17.60083012593064, 78.18557739257812] ]] } }); 

我在mongo中使用的testing。

 db.geom.find({polygons: { $geoWithin: { $geometry: { "type" : "Point", coordinates: [ 17.3734, 78.4738 ] } } } }); 

道德是我有一个映射的家,想知道一个人什么时候进入那个家,我把这个人的位置每时每刻发送到服务器。 每一个时间(5秒)它运行一个testInsideOfHouse.js并检查这个人是否进入了房子,但脚本没有发现任何东西在mongo …有一些我可以做更多的“简单”的方式使用nodejs和蒙戈…或者我正确的方式吗?

  Position.find( { geo : { $geoWithin : { $box : [ [ box[0] , box[1] ] , [ box[2] , box[3] ] ] } } }, function(err, response) { if (err) return err; console.log(response) }); 

我发现一个替代scheme是使用一个盒子,但它会比使用多边形更好的select? 我不太明白它是如何工作的这个盒子….

我发现,在MongoDB中不存在子查询,因为我会做,而不是有一个人有位置的人名单,是否他们在一个房子或检查ses他们在一个房屋名单,并有回报的房子是这个人。 在MySQL或SQL将是另一个查询中的查询

感谢您的关注

你仍然可以使用types“点”作为人的坐标,但是使用的正确的操作符是“$ geoIntersects”,而不是“$ geoWithin”(因为多边形不能在一个点内)

 db.geom.find({polygons: { $geoIntersects: { $geometry: { "type" : "Point", coordinates: [ 17.3734, 78.4738 ] } } } });"