diff --git a/mongoengine/queryset/transform.py b/mongoengine/queryset/transform.py index 4ff38769..e7f5988c 100644 --- a/mongoengine/queryset/transform.py +++ b/mongoengine/queryset/transform.py @@ -7,6 +7,7 @@ from mongoengine.base.fields import UPDATE_OPERATORS from mongoengine.connection import get_connection from mongoengine.common import _import_class from mongoengine.errors import InvalidQueryError +from mongoengine.python_support import IS_PYMONGO_3 __all__ = ('query', 'update') @@ -135,11 +136,12 @@ def query(_doc_cls=None, _field_operation=False, **query): if k == '$maxDistance' or k == '$minDistance': continue value_son[k] = v - # seems only required for 2.6== 2.6, may fail when combining + # PyMongo 3+ and MongoDB < 2.6 near_embedded = False for near_op in ('$near', '$nearSphere'): - if isinstance(value_dict.get(near_op), dict) and \ - get_connection().max_wire_version > 1: + if isinstance(value_dict.get(near_op), dict) and ( + IS_PYMONGO_3 or get_connection().max_wire_version > 1): value_son[near_op] = SON(value_son[near_op]) if '$maxDistance' in value_dict: value_son[near_op][