Merge branch 'master' of github.com:MongoEngine/mongoengine into support-elemmatch-projection
This commit is contained in:
		
							
								
								
									
										1
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								AUTHORS
									
									
									
									
									
								
							@@ -255,3 +255,4 @@ that much better:
 | 
			
		||||
 * Filip Kucharczyk (https://github.com/Pacu2)
 | 
			
		||||
 * Eric Timmons (https://github.com/daewok)
 | 
			
		||||
 * Matthew Simpson (https://github.com/mcsimps2)
 | 
			
		||||
 * Leonardo Domingues (https://github.com/leodmgs)
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ Development
 | 
			
		||||
===========
 | 
			
		||||
- (Fill this out as you fix issues and develop your features).
 | 
			
		||||
- Add Mongo 4.0 to Travis
 | 
			
		||||
- Fixed a bug causing inaccurate query results, while combining ``__raw__`` and regular filters for the same field #2264
 | 
			
		||||
 | 
			
		||||
Changes in 0.19.1
 | 
			
		||||
=================
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,7 @@ class InvalidCollectionError(Exception):
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class EmbeddedDocument(six.with_metaclass(DocumentMetaclass, BaseDocument)):
 | 
			
		||||
    """A :class:`~mongoengine.Document` that isn't stored in its own
 | 
			
		||||
    r"""A :class:`~mongoengine.Document` that isn't stored in its own
 | 
			
		||||
    collection.  :class:`~mongoengine.EmbeddedDocument`\ s should be used as
 | 
			
		||||
    fields on :class:`~mongoengine.Document`\ s through the
 | 
			
		||||
    :class:`~mongoengine.EmbeddedDocumentField` field type.
 | 
			
		||||
@@ -332,7 +332,7 @@ class Document(six.with_metaclass(TopLevelDocumentMetaclass, BaseDocument)):
 | 
			
		||||
    ):
 | 
			
		||||
        """Save the :class:`~mongoengine.Document` to the database. If the
 | 
			
		||||
        document already exists, it will be updated, otherwise it will be
 | 
			
		||||
        created.
 | 
			
		||||
        created. Returns the saved object instance.
 | 
			
		||||
 | 
			
		||||
        :param force_insert: only try to create a new document, don't allow
 | 
			
		||||
            updates of existing documents.
 | 
			
		||||
 
 | 
			
		||||
@@ -694,8 +694,8 @@ class BaseQuerySet(object):
 | 
			
		||||
    def in_bulk(self, object_ids):
 | 
			
		||||
        """Retrieve a set of documents by their ids.
 | 
			
		||||
 | 
			
		||||
        :param object_ids: a list or tuple of ``ObjectId``\ s
 | 
			
		||||
        :rtype: dict of ObjectIds as keys and collection-specific
 | 
			
		||||
        :param object_ids: a list or tuple of ObjectId's
 | 
			
		||||
        :rtype: dict of ObjectId's as keys and collection-specific
 | 
			
		||||
                Document subclasses as values.
 | 
			
		||||
 | 
			
		||||
        .. versionadded:: 0.3
 | 
			
		||||
@@ -1140,7 +1140,7 @@ class BaseQuerySet(object):
 | 
			
		||||
 | 
			
		||||
    def explain(self):
 | 
			
		||||
        """Return an explain plan record for the
 | 
			
		||||
        :class:`~mongoengine.queryset.QuerySet`\ 's cursor.
 | 
			
		||||
        :class:`~mongoengine.queryset.QuerySet` cursor.
 | 
			
		||||
        """
 | 
			
		||||
        return self._cursor.explain()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -169,9 +169,9 @@ def query(_doc_cls=None, **kwargs):
 | 
			
		||||
 | 
			
		||||
        key = ".".join(parts)
 | 
			
		||||
 | 
			
		||||
        if op is None or key not in mongo_query:
 | 
			
		||||
        if key not in mongo_query:
 | 
			
		||||
            mongo_query[key] = value
 | 
			
		||||
        elif key in mongo_query:
 | 
			
		||||
        else:
 | 
			
		||||
            if isinstance(mongo_query[key], dict) and isinstance(value, dict):
 | 
			
		||||
                mongo_query[key].update(value)
 | 
			
		||||
                # $max/minDistance needs to come last - convert to SON
 | 
			
		||||
 
 | 
			
		||||
@@ -65,7 +65,7 @@ class ComplexDateTimeFieldTest(MongoDBTestCase):
 | 
			
		||||
        for values in itertools.product([2014], mm, dd, hh, ii, ss, microsecond):
 | 
			
		||||
            stored = LogEntry(date=datetime.datetime(*values)).to_mongo()["date"]
 | 
			
		||||
            assert (
 | 
			
		||||
                re.match("^\d{4},\d{2},\d{2},\d{2},\d{2},\d{2},\d{6}$", stored)
 | 
			
		||||
                re.match(r"^\d{4},\d{2},\d{2},\d{2},\d{2},\d{2},\d{6}$", stored)
 | 
			
		||||
                is not None
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
@@ -74,7 +74,7 @@ class ComplexDateTimeFieldTest(MongoDBTestCase):
 | 
			
		||||
            "date_with_dots"
 | 
			
		||||
        ]
 | 
			
		||||
        assert (
 | 
			
		||||
            re.match("^\d{4}.\d{2}.\d{2}.\d{2}.\d{2}.\d{2}.\d{6}$", stored) is not None
 | 
			
		||||
            re.match(r"^\d{4}.\d{2}.\d{2}.\d{2}.\d{2}.\d{2}.\d{6}$", stored) is not None
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def test_complexdatetime_usage(self):
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,12 @@ class TestTransform(unittest.TestCase):
 | 
			
		||||
        }
 | 
			
		||||
        assert transform.query(friend__age__gte=30) == {"friend.age": {"$gte": 30}}
 | 
			
		||||
        assert transform.query(name__exists=True) == {"name": {"$exists": True}}
 | 
			
		||||
        assert transform.query(name=["Mark"], __raw__={"name": {"$in": "Tom"}}) == {
 | 
			
		||||
            "$and": [{"name": ["Mark"]}, {"name": {"$in": "Tom"}}]
 | 
			
		||||
        }
 | 
			
		||||
        assert transform.query(name__in=["Tom"], __raw__={"name": "Mark"}) == {
 | 
			
		||||
            "$and": [{"name": {"$in": ["Tom"]}}, {"name": "Mark"}]
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    def test_transform_update(self):
 | 
			
		||||
        class LisDoc(Document):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user