diff --git a/mongoengine/fields.py b/mongoengine/fields.py index ba508a70..aa5aa805 100644 --- a/mongoengine/fields.py +++ b/mongoengine/fields.py @@ -13,8 +13,6 @@ import pymongo import six from six import iteritems -from mongoengine.queryset.transform import STRING_OPERATORS - try: import dateutil except ImportError: @@ -39,6 +37,7 @@ from mongoengine.errors import DoesNotExist, InvalidQueryError, ValidationError from mongoengine.python_support import StringIO from mongoengine.queryset import DO_NOTHING from mongoengine.queryset.base import BaseQuerySet +from mongoengine.queryset.transform import STRING_OPERATORS try: from PIL import Image, ImageOps diff --git a/mongoengine/mongodb_support.py b/mongoengine/mongodb_support.py index 8234a616..b20ebc1e 100644 --- a/mongoengine/mongodb_support.py +++ b/mongoengine/mongodb_support.py @@ -6,6 +6,7 @@ from mongoengine.connection import get_connection # Constant that can be used to compare the version retrieved with # get_mongodb_version() +MONGODB_34 = (3, 4) MONGODB_36 = (3, 6) diff --git a/tests/document/instance.py b/tests/document/instance.py index 04bddea1..0f2f0c0f 100644 --- a/tests/document/instance.py +++ b/tests/document/instance.py @@ -12,6 +12,7 @@ from bson import DBRef, ObjectId from pymongo.errors import DuplicateKeyError from six import iteritems +from mongoengine.mongodb_support import get_mongodb_version, MONGODB_36, MONGODB_34 from mongoengine.pymongo_support import list_collection_names from tests import fixtures from tests.fixtures import (PickleEmbedded, PickleTest, PickleSignalsTest, @@ -467,10 +468,13 @@ class InstanceTest(MongoDBTestCase): doc = Animal(superphylum='Deuterostomia') doc.save() + mongo_db = get_mongodb_version() + CMD_QUERY_KEY = 'command' if mongo_db >= MONGODB_36 else 'query' + with query_counter() as q: doc.reload() query_op = q.db.system.profile.find({'ns': 'mongoenginetest.animal'})[0] - self.assertEqual(set(query_op['query']['filter'].keys()), set(['_id', 'superphylum'])) + self.assertEqual(set(query_op[CMD_QUERY_KEY]['filter'].keys()), set(['_id', 'superphylum'])) Animal.drop_collection() @@ -501,12 +505,17 @@ class InstanceTest(MongoDBTestCase): doc = Animal(is_mammal=True, name='Dog') doc.save() + mongo_db = get_mongodb_version() + with query_counter() as q: doc.name = 'Cat' doc.save() query_op = q.db.system.profile.find({'ns': 'mongoenginetest.animal'})[0] self.assertEqual(query_op['op'], 'update') - self.assertEqual(set(query_op['query'].keys()), set(['_id', 'is_mammal'])) + if mongo_db == MONGODB_34: + self.assertEqual(set(query_op['query'].keys()), set(['_id', 'is_mammal'])) + else: + self.assertEqual(set(query_op['command']['q'].keys()), set(['_id', 'is_mammal'])) Animal.drop_collection()