我在集合中的文档看起来像这样 -
{'_id' : 'Delhi1', 'loc' : [28.34242,77.656565] }
{'_id' : 'Delhi2', 'loc' : [27.34242,78.626523] }
{'_id' : 'Delhi3', 'loc' : [25.34242,77.612345] }
{'_id' : 'Delhi4', 'loc' : [28.34242,77.676565] }
我想使用pymongo应用聚合,根据输入latlong找出相关文档。我在' loc'上创建了索引。以下是我到目前为止所做的事情 -
pipeline = [{'$geoNear':{'near': [27.8787, 78.2342],
'distanceField': "distance",
'maxDistance' : 2000 }}]
db['mycollection'].aggregate(pipeline)
但这对我不起作用?如何正确使用它?
答案 0 :(得分:2)
实际上,我创造了' 2dsphere'集合中的索引,以及使用2dphere的geoNear,我们需要在管道中指定sphere = True
pipeline = [{'$geoNear':{'near': [27.8787, 78.2342],
'distanceField': "distance",
'maxDistance' : 2000,
'spherical' : True }}]
答案 1 :(得分:0)
看起来你有一些格式错误:1)集合和运算符都不需要括号或括号,2)逻辑运算符是小写的。
db.mycollection.aggregate([
{
$geoNear: {
near: { coordinates: [ 27.8787 , 78.2342 ] },
distanceField: "distance",
maxDistance: 2000,
spherical: true
}
}
])