如何在mongodb的圆形区域中获得该点(用户位置) 我有圆形区域列表(不是多边形!重要) 我想知道用户基于他的位置存在于哪个圆圈区域(区域)。(在MongoDB中)

如何在mongodb的圆形区域中获得该点(用户位置) 我有圆形区域列表(不是多边形!重要) 我想知道用户基于他的位置存在于哪个圆圈区域(区域)。(在MongoDB中),mongodb,Mongodb,请您为我提供一个很好的解决方案。使用$geointen函数并以编程方式构造将提供给find()函数的圆列表 circles = []; // lat,lon radius circles[0] = [ [0,0] , 2 ]; circles[1] = [ [4,0] , 4 ]; circles[2] = [ [8,8] , 2 ]; locs = []; for(n = 0; n < 2; n++) { var pt = circles[n][0];

请您为我提供一个很好的解决方案。

使用
$geointen
函数并以编程方式构造将提供给
find()
函数的圆列表

circles = [];
//            lat,lon   radius
circles[0] = [ [0,0] , 2 ];
circles[1] = [ [4,0] , 4 ];
circles[2] = [ [8,8] , 2 ];

locs = [];
for(n = 0; n < 2; n++) {
  var pt = circles[n][0];
  var radius = circles[n][1];
  locs.push({"location": { $geoWithin :
            { $center : [ pt, radius ]
                    } }});
}

var q = {"$or": locs};

var c = db.geo.find(q);
   c.forEach(function(r) {
      printjson(r);
  });
circles=[];
//lat,lon半径
圆圈[0]=[0,0],2];
圆圈[1]=[4,0],4];
圆圈[2]=[8,8],2];
locs=[];
对于(n=0;n<2;n++){
var pt=圆[n][0];
var半径=圆[n][1];
locs.push({“位置”:{$GEOIN:
{$center:[pt,半径]
} }});
}
var q={“$or”:locs};
var c=db.geo.find(q);
c、 forEach(函数(r){
printjson(r);
});

谢谢@Buzz的回复。谢谢@Buzz的回复。但位置(geo)未存储在集合中。和当前用户位置一样,当前用户位置为28.567、77.7678,圆圈存储在集合中。现在我想得到一个圆,它包含那个长的和长的。你的回答与我的问题相反。还有别的办法吗?抱歉,但我没有清楚地理解这个问题。您知道用户在哪里,例如,其中一个用户的电话号码为[28.567,77.7678]。该信息存储在某个集合A中。集合B包含圆定义。因此,从集合B中拉出圆定义,然后转过身并将查询应用于集合A。是否接近?是@嗡嗡声谢谢