我想查询所有包含一个点的多边形的文档,然后针对该结果集,根据该点与文档位置的接近程度对其进行排序。想象一下,我有一个friend数据库,因为我很酷,想看看哪些friend在我的范围内并且愿意来玩。(每个friend都有一个约会多边形,这是他们愿意为约会旅行的范围)对于所有比赛,我希望他们继续根据他的实际地址和它到我的点(这是我的地址)的距离,看看我应该调用哪个friend,这样我就可以确定我是否同意他们来从遥远的地方。(比方说300米)到目前为止,我在下面有一个查询来查找包含我的点的多边形,但我不知道如何包含mongodb的$near运算符对于JSON:{"_id":"objid","
按我要返回的文档中的属性进行过滤时遇到问题...甚至不知道如何表达这个问题。例如:我正在开发一个系统,如果附近有工作弹出,用户会收到警报。该用户定义如下:varuser=newSchema({location:{type:[Number],index:'2dsphere',required:true},maxDistance:{type:Number,required:true},});还有工作:varjob=newSchema({location:{type:[Number],index:'2dsphere',required:true},});创建工作后,如何找到合适的用户?我需要
最初我想支持带有geo$near功能的mongodb文本搜索。后来意识到这两个不能一起使用,因为都需要索引。后来我决定改用$geoWithin。但是,结果不像$near那样按距离排序。我想知道是否有任何方法可以按“距离”对$geoWithin返回的结果进行排序? 最佳答案 $geoWithin运算符不返回排序结果。因此,MongoDB可以比地理空间$near或$nearSphere查询更快地返回$geoWithin查询,后者对结果进行排序。所以简而言之,使用$near或$nearSphere以便您可以获得排序结果。见docs:The
我希望有人能帮助我-我想用地理查询填充子文档以对它们进行排序:我有这些模型(简化):(很多文章):vararticleSchema=mongoose.Schema({places:[{type:mongoose.Schema.Types.ObjectId,ref:"places",required:false}],someData:{type:String,required:true},})(很多地方):varplaceSchema=mongoose.Schema({longitudelatitude:{type:{type:String,required:true},coordina
我收集了这样的文档:{..."CurrentLocation":{"type":"Point","coordinates":[-92.48436693078111,35.85223020932276]}...}我需要使用两个可能的中心点进行“$near”查询:db.Truck.find({"$or":[{"DestinationLocation":{"$near":{"$geometry":{"type":"Point","coordinates":[-117.256875,41.856405]},"$maxDistance":100000.0}}},{"DestinationLoca
当我尝试从Mongoshell中查找距犹他州盐湖城50公里范围内的所有成员时,我收到错误消息:error:{"$err":"pointnotinintervalof[-180,180]::causedby::{0:0.0,1:50000.0}","code":16433}这是我正在运行的查询:db.members.find({'geo.point':{$near:{$geometry:{type:"Point",coordinates:[111.000,40.000]},$maxDistance:50000}}})成员架构是这样的:varmemberSchema=mongoose.Sc
我正在尝试查找附近的地点。下面的代码工作正常。但是我无法根据给定的纬度、经度获得实际的位置距离。Criteriacriteria=newCriteria("coordinates").near(newPoint(searchRequest.getLat(),searchRequest.getLng()));Queryquery=newQuery();query.addCriteria(criteria);query.addCriteria(criteriaName);query.limit(5);Listls=(List)mongoTemplate.find(query,Place.c
varquery="{'Geo':{'$near':{'$geometry':{'type':'Point','coordinates':[]}}}}";varparsing=BsonDocument.Parse(query);varqwithcoor=parsing["Geo"]["$near"]["$geometry"]["coordinates"].AsBsonArray;qwithcoor.AddRange(coordinates);parsing["Geo"]["$near"].AsBsonDocument.Add("$maxDistance",radius);varcoll
因此,如果我们像这样使用maxDistance运行GeoSpatialMongdoDB查询:db.getCollection('Places').aggregate([{"$geoNear":{"near":{"type":"Point","coordinates":[-0.1251485,51.5174914]},"spherical":true,"distanceField":"dist","maxDistance":2000,"query":{"field":"xxx"}}}}])我们得到以下结果作为示例:[PlaceA,PlaceB,PlaceC]然后,假设我们运行以下查询:d
将$near与mongodb结合使用,按距离返回结果。有没有办法知道(或指定)距离匹配时的排序顺序?例如,如果我请求10个文档并且它们的距离都相同,然后请求另外10个文档并且它们与第一组的距离也相同,我可以在哪个字段上排序以确保排序顺序是总是一样吗? 最佳答案 $near和$geoNear按距离排序,对于与输入点距离相同的事物,没有定义顺序。您可以使用带有$geoNear的聚合来根据距离+另一个字段进行排序以确保一致的顺序:db.test.aggregate([{"$geoNear":{"near":{"type":"Point",