몽고 엔진의 지형 공간 쿼리를 작동시키는 데 문제가 있습니다. 나는mongoengine 클래스와 cached.geoLoc
이라는 필드를 가지고 있는데 이는 몽고 엔진 유형 PointField()
입니다. 전화 할 경우몽고와 지형 공간 쿼리에 문제가 발생했습니다.
User.objects(cached__geoLoc__near=[100,100])
그런 다음 답변을 반환합니다. 내가 제한된 반경 결과를 제한하고 전화를 원한다면 : 나는 문제가 될 수 무엇 MongoEngine 버전 0.8.7 및 MongoDB를 2.4을 사용하고 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
:
User.objects(cached__geoLoc__near=[100,100], cached__geoLoc__max_distance=1000)
를 다음 오류가 발생합니다 ?
좋아, 제가 버그를 제기 할 것입니다. 그러나 그 동안 직접 구문을 사용하고 결과에서 MongoEngine 객체를 생성 할 수 있는지 알고 있습니까? 직접 구문을 사용하면 표준 사전 만 반환됩니다. –
@ J-bob 정직하게도, 나는 결코 시도하지 않고 있었다. 그러나 기본 개념은 생성자에 대한 "인수"가 반환 된 것과 동일한 값이어야한다는 것입니다. 따라서 "원시"객체 응답을 전달하고 해당 클래스의 다른 메소드에 액세스하려는 곳에 노출 된 클래스 유형으로 "캐스트"하는 것이 문제가되어서는 안됩니다. 다른 언어 구현에서이 작업을 수행하십시오. 하지만 MongoEngine 컨설턴트는 일반 사용자보다. –
여전히 MongoEngine 객체를 가져 오는 해결 방법에 대해서는 MongoEngine의'__raw__' 인수 ('User.objects (__ raw __ = {<< 원시 pymongo 구문 >> >>}')를 사용할 수 있음을 알았습니다. 그러면 MongoEngine 객체가 반환됩니다. –