簡體   English   中英

Pymongo Asyncmongo $ max距離不起作用

[英]Pymongo Asyncmongo $maxDistance not working

我正在嘗試使用$maxDistance查詢MongoDB geo 但它在PyMongoAsyncMongo中均AsyncMongo


異步蒙哥

self.application.asyncdb.places.find({"loc":{"$near":[longitude, latitude], "$maxDistance":1000}}, limit=20, callback=self.showNearByPlaces)


PyMongo

placeColl = self.application.db.places
cursorObj = placeColl.find({"loc": {"$near":(longitude, latitude)},"$maxDistance":1000})

這是使用PyMongo 2.6.3和MongoDB 2.4.8的示例:

>>> from pymongo import MongoClient
>>> from bson import SON
>>> c = MongoClient()
>>> collection = c.db.collection
>>> collection.drop()
>>> collection.create_index([('loc', '2d')])
u'loc_2d'
>>> collection.insert({'loc': [1, 1]})
ObjectId('52d19a5eca1ce961b94f23f4')
>>> collection.insert({'loc': [3, 3]})
ObjectId('52d19a69ca1ce961b94f23f5')
>>> list(collection.find({'loc': SON([('$near', [0, 0]), ('$maxDistance', 2)])}))
[{u'loc': [1, 1], u'_id': ObjectId('52d19a5eca1ce961b94f23f4')}]

您可以看到結果中包含[0,0] 2個單位內的點,而更遠的點被排除。

與大多數MongoDB查詢不同, $near查詢要求鍵必須按特定順序排列。 $near必須在$maxDistance之前,而不是之后。 由於常規Python字典不保留鍵的順序,因此我使用了bson.SON ,它是作為PyMongo軟件包的一部分安裝的。 SON就像字典一樣,但保留順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM