我遇到了麻煩Mongoengine的地理空間查詢工作。我有一個User
mongoengine類與一個叫cached.geoLoc
場這是mongoengine型PointField()
的。如果我打電話麻煩mongoengine和地理空間查詢
User.objects(cached__geoLoc__near=[100,100])
然後它返回答案。但是,如果我想結果限制在有限的範圍,並呼籲:
User.objects(cached__geoLoc__near=[100,100], cached__geoLoc__max_distance=1000)
然後我得到一個錯誤:pymongo.errors.OperationFailure: database error: Can't canonicalize query: BadValue geo near accepts just one argument when querying for a GeoJSON point. Extra field found: $maxDistance: 1000
我使用MongoEngine版本0.8.7和MongoDB 2.4可能是什麼問題?
好吧,我將提交一個錯誤。但是與此同時,你知道是否可以使用直接語法,然後從結果中構造一個MongoEngine對象嗎?使用直接語法只是返回一個標準字典。 – 2014-10-03 13:51:40
@ J-bob老實說,我從來沒有嘗試過。但基本的概念是,構造函數的「參數」應該與返回的值相同。因此,傳遞「原始」對象響應並「投射」到您希望訪問該類上的其他方法的類的類型應該不是問題。在其他語言實現中完成它。但更多的是一個MongoEngine的顧問,而不是一個普通的用戶。 – 2014-10-03 14:05:40
對於一個變通方法,仍可以讓你MongoEngine對象,我想通了,我可以用MongoEngine的'__raw__'參數('User.objects(__ __原料= {<<原料pymongo語法這裏>>}'),這將返回MongoEngine對象。 – 2014-10-15 16:17:16