4. Changelog¶
4.1. Development¶
(Fill this out as you fix issues and develop your features).
4.2. Changes in 0.18.2¶
Replace some of the deprecated PyMongo v2.x methods with their v3.x equivalents #2097
Various code clarity and documentation improvements
4.3. Changes in 0.18.1¶
- Fix a bug introduced in 0.18.0 which was causing .save() to update all the fields
instead of updating only the modified fields. This bug only occurs when using custom pk #2082
Add Python 3.7 in travis #2058
4.4. Changes in 0.18.0¶
Drop support for EOL’d MongoDB v2.6, v3.0, and v3.2.
MongoEngine now requires PyMongo >= v3.4. Travis CI now tests against MongoDB v3.4 – v3.6 and PyMongo v3.4 – v3.6 (#2017 #2066).
Improve performance by avoiding a call to to_mongo in Document.save() #2049
- Connection/disconnection improvements:
Expose mongoengine.connection.disconnect and mongoengine.connection.disconnect_all
Fix disconnecting #566 #1599 #605 #607 #1213 #565
Improve documentation of connect/disconnect
Fix issue when using multiple connections to the same mongo with different credentials #2047
connect fails immediately when db name contains invalid characters #2031 #1718
Fix the default write concern of Document.save that was overwriting the connection write concern #568
Fix querying on List(EmbeddedDocument) subclasses fields #1961 #1492
Fix querying on (Generic)EmbeddedDocument subclasses fields #475
Fix QuerySet.aggregate so that it takes limit and skip value into account #2029
Generate unique indices for SortedListField and EmbeddedDocumentListFields #2020
BREAKING CHANGE: Changed the behavior of a custom field validator (i.e validation parameter of a Field). It is now expected to raise a ValidationError instead of returning True/False #2050
- BREAKING CHANGES (associated with connect/disconnect fixes):
Calling connect 2 times with the same alias and different parameter will raise an error (should call disconnect first).
disconnect now clears mongoengine.connection._connection_settings.
disconnect now clears the cached attribute Document._collection.
BREAKING CHANGE: EmbeddedDocument.save & .reload is no longier exist #1552
4.5. Changes in 0.17.0¶
Fix .only() working improperly after using .count() of the same instance of QuerySet
Fix batch_size that was not copied when cloning a queryset object #2011
POTENTIAL BREAKING CHANGE: All result fields are now passed, including internal fields (_cls, _id) when using QuerySet.as_pymongo #1976
Document a BREAKING CHANGE introduced in 0.15.3 and not reported at that time (#1995)
Fix InvalidStringData error when using modify on a BinaryField #1127
DEPRECATION: EmbeddedDocument.save & .reload are marked as deprecated and will be removed in a next version of mongoengine #1552
Fix test suite and CI to support MongoDB 3.4 #1445
Fix reference fields querying the database on each access if value contains orphan DBRefs
5. Changes in 0.16.3¶
Fix $push with $position operator not working with lists in embedded document #1965
6. Changes in 0.16.2¶
Fix .save() that fails when called with write_concern=None (regression of 0.16.1) #1958
7. Changes in 0.16.1¶
Fix _cls that is not set properly in Document constructor (regression) #1950
Fix bug in _delta method - Update of a ListField depends on an unrelated dynamic field update #1733
Remove deprecated save() method and used insert_one() #1899
8. Changes in 0.16.0¶
Various improvements to the doc
Improvement to code quality
- POTENTIAL BREAKING CHANGES:
EmbeddedDocumentField will no longer accept references to Document classes in its constructor #1661
Get rid of the basecls parameter from the DictField constructor (dead code) #1876
default value of ComplexDateTime is now None (and no longer the current datetime) #1368
Fix unhashable TypeError when referencing a Document with a compound key in an EmbeddedDocument #1685
Fix bug where an EmbeddedDocument with the same id as its parent would not be tracked for changes #1768
Fix the fact that bulk insert() was not setting primary keys of inserted documents instances #1919
Fix bug when referencing the abstract class in a ReferenceField #1920
Allow modification to the document made in pre_save_post_validation to be taken into account #1202
Replaced MongoDB 2.4 tests in CI by MongoDB 3.2 #1903
Fix side effects of using queryset.`no_dereference` on other documents #1677
Fix TypeError when using lazy django translation objects as translated choices #1879
Improve 2-3 codebase compatibility #1889
Fix the support for changing the default value of ComplexDateTime #1368
- Improves error message in case an EmbeddedDocumentListField receives an EmbeddedDocument instance
instead of a list #1877
Fix the Decimal operator inc/dec #1517 #1320
Ignore killcursors queries in query_counter context manager #1869
Fix the fact that query_counter was modifying the initial profiling_level in case it was != 0 #1870
Repaired the no_sub_classes context manager + fix the fact that it was swallowing exceptions #1865
Fix index creation error that was swallowed by hasattr under python2 #1688
QuerySet limit function behaviour: Passing 0 as parameter will return all the documents in the cursor #1611
bulk insert updates the ids of the input documents instances #1919
- Fix an harmless bug related to GenericReferenceField where modifications in the generic-referenced document
were tracked in the parent #1934
Improve validator of BinaryField #273
Implemented lazy regex compiling in Field classes to improve ‘import mongoengine’ performance #1806
Updated GridFSProxy.__str__ so that it would always print both the filename and grid_id #710
Add __repr__ to Q and QCombination #1843
fix bug in BaseList.__iter__ operator (was occuring when modifying a BaseList while iterating over it) #1676
Added field `DateField`#513
8.1. Changes in 0.15.3¶
BREAKING CHANGES: Queryset.update/update_one methods now returns an UpdateResult when full_result=True is provided and no longer a dict (relates to #1491)
Subfield resolve error in generic_emdedded_document query #1651 #1652
use each modifier only with $position #1673 #1675
Improve LazyReferenceField and GenericLazyReferenceField with nested fields #1704
Fix validation error instance in GenericEmbeddedDocumentField #1067
Update cached fields when fields argument is given #1712
Add a db parameter to register_connection for compatibility with connect
Use insert_one, insert_many in Document.insert #1491
Use new update_one, update_many on document/queryset update #1491
Use insert_one, insert_many in Document.insert #1491
Fix reload(fields) affect changed fields #1371
Fix Read-only access to database fails when trying to create indexes #1338
8.2. Changes in 0.15.0¶
Add LazyReferenceField and GenericLazyReferenceField to address #1230
8.3. Changes in 0.14.1¶
Removed SemiStrictDict and started using a regular dict for BaseDocument._data #1630
Added support for the $position param in the $push operator #1566
Fixed DateTimeField interpreting an empty string as today #1533
Added a missing __ne__ method to the GridFSProxy class #1632
Fixed BaseQuerySet._fields_to_db_fields #1553
8.4. Changes in 0.14.0¶
BREAKING CHANGE: Removed the coerce_types param from QuerySet.as_pymongo #1549
POTENTIAL BREAKING CHANGE: Made EmbeddedDocument not hashable by default #1528
Improved code quality #1531, #1540, #1541, #1547
8.5. Changes in 0.13.0¶
POTENTIAL BREAKING CHANGE: Added Unicode support to the EmailField, see docs/upgrade.rst for details.
8.6. Changes in 0.12.0¶
POTENTIAL BREAKING CHANGE: Fixed limit/skip/hint/batch_size chaining #1476
POTENTIAL BREAKING CHANGE: Changed a public QuerySet.clone_into method to a private QuerySet._clone_into #1476
Fixed the way Document.objects.create works with duplicate IDs #1485
Fixed connecting to a replica set with PyMongo 2.x #1436
Fixed using sets in field choices #1481
Fixed deleting items from a ListField #1318
Fixed an obscure error message when filtering by field__in=non_iterable. #1237
Fixed behavior of a dec update operator #1450
Added a rename update operator #1454
Added validation for the db_field parameter #1448
Fixed the error message displayed when querying an EmbeddedDocumentField by an invalid value #1440
Fixed the error message displayed when validating unicode URLs #1486
Raise an error when trying to save an abstract document #1449
8.7. Changes in 0.11.0¶
BREAKING CHANGE: Renamed ConnectionError to MongoEngineConnectionError since the former is a built-in exception name in Python v3.x. #1428
BREAKING CHANGE: Dropped Python 2.6 support. #1428
BREAKING CHANGE: from mongoengine.base import ErrorClass won’t work anymore for any error from mongoengine.errors (e.g. ValidationError). Use from mongoengine.errors import ErrorClass instead. #1428
BREAKING CHANGE: Accessing a broken reference will raise a DoesNotExist error. In the past it used to return None. #1334
Fixed absent rounding for DecimalField when force_string is set. #1103
8.8. Changes in 0.10.8¶
Added support for QuerySet.batch_size (#1426)
Fixed query set iteration within iteration #1427
Fixed an issue where specifying a MongoDB URI host would override more information than it should #1421
Added ability to filter the generic reference field by ObjectId and DBRef #1425
Fixed delete cascade for models with a custom primary key field #1247
Added ability to specify an authentication mechanism (e.g. X.509) #1333
Added support for falsey primary keys (e.g. doc.pk = 0) #1354
Fixed QuerySet#sum/average for fields w/ explicit db_field #1417
Fixed filtering by embedded_doc=None #1422
Added support for cursor.comment #1420
Fixed doc.get_<field>_display #1419
Fixed __repr__ method of the StrictDict #1424
Added a deprecation warning for Python 2.6
8.9. Changes in 0.10.7¶
Dropped Python 3.2 support #1390
Fixed the bug where dynamic doc has index inside a dict field #1278
Fixed: ListField minus index assignment does not work #1128
Fixed cascade delete mixing among collections #1224
Add signal_kwargs argument to Document.save, Document.delete and BaseQuerySet.insert to be passed to signals calls #1206
Raise OperationError when trying to do a drop_collection on document with no collection set.
count on ListField of EmbeddedDocumentField fails. #1187
Fixed long fields stored as int32 in Python 3. #1253
MapField now handles unicodes keys correctly. #1267
ListField now handles negative indicies correctly. #1270
Fixed AttributeError when initializing EmbeddedDocument with positional args. #681
Fixed no_cursor_timeout error with pymongo 3.0+ #1304
Replaced map-reduce based QuerySet.sum/average with aggregation-based implementations #1336
Fixed support for __ to escape field names that match operators names in update #1351
Fixed BaseDocument#_mark_as_changed #1369
Added support for pickling QuerySet instances. #1397
Fixed connecting to a list of hosts #1389
Fixed a bug where accessing broken references wouldn’t raise a DoesNotExist error #1334
Fixed not being able to specify use_db_field=False on ListField(EmbeddedDocumentField) instances #1218
Improvements to the dictionary fields docs #1383
8.10. Changes in 0.10.6¶
Add support for mocking MongoEngine based on mongomock. #1151
Fixed not being able to run tests on Windows. #1153
Allow creation of sparse compound indexes. #1114
count on ListField of EmbeddedDocumentField fails. #1187
8.11. Changes in 0.10.5¶
Fix for reloading of strict with special fields. #1156
8.12. Changes in 0.10.4¶
SaveConditionError is now importable from the top level package. #1165
upsert_one method added. #1157
8.13. Changes in 0.10.3¶
Fix read_preference (it had chaining issues with PyMongo 2.x and it didn’t work at all with PyMongo 3.x) #1042
8.14. Changes in 0.10.2¶
Allow shard key to point to a field in an embedded document. #551
Allow arbirary metadata in fields. #1129
ReferenceFields now support abstract document types. #837
8.15. Changes in 0.10.1¶
Fix infinite recursion with CASCADE delete rules under specific conditions. #1046
Fix CachedReferenceField bug when loading cached docs as DBRef but failing to save them. #1047
Fix ignored chained options #842
Document save’s save_condition error raises SaveConditionError exception #1070
Fix Document.reload for DynamicDocument. #1050
StrictDict & SemiStrictDict are shadowed at init time. #1105
Fix ListField minus index assignment does not work. #1119
Remove code that marks field as changed when the field has default but not existed in database #1126
Remove test dependencies (nose and rednose) from install dependencies list. #1079
Recursively build query when using elemMatch operator. #1130
Fix instance back references for lists of embedded documents. #1131
8.16. Changes in 0.10.0¶
Django support was removed and will be available as a separate extension. #958
Allow to load undeclared field with meta attribute ‘strict’: False #957
Support for PyMongo 3+ #946
Removed get_or_create() deprecated since 0.8.0. #300
Improve Document._created status when switch collection and db #1020
Queryset update doesn’t go through field validation #453
Added support for specifying authentication source as option authSource in URI. #967
Fixed mark_as_changed to handle higher/lower level fields changed. #927
ListField of embedded docs doesn’t set the _instance attribute when iterating over it #914
Support += and *= for ListField #595
Use sets for populating dbrefs to dereference
Fixed unpickled documents replacing the global field’s list. #888
Fixed storage of microseconds in ComplexDateTimeField and unused separator option. #910
Don’t send a “cls” option to ensureIndex (related to https://jira.mongodb.org/browse/SERVER-769)
Fix for updating sorting in SortedListField. #978
Added __ support to escape field name in fields lookup keywords that match operators names #949
Fix for issue where FileField deletion did not free space in GridFS.
No_dereference() not respected on embedded docs containing reference. #517
Document save raise an exception if save_condition fails #1005
Fixes some internal _id handling issue. #961
Updated URL and Email Field regex validators, added schemes argument to URLField validation. #652
Capped collection multiple of 256. #1011
Added BaseQuerySet.aggregate_sum and BaseQuerySet.aggregate_average methods.
Fix for delete with write_concern {‘w’: 0}. #1008
Allow dynamic lookup for more than two parts. #882
Added support for min_distance on geo queries. #831
Allow to add custom metadata to fields #705
8.17. Changes in 0.9.0¶
Update FileField when creating a new file #714
Added EmbeddedDocumentListField for Lists of Embedded Documents. #826
ComplexDateTimeField should fall back to None when null=True #864
Request Support for $min, $max Field update operators #863
BaseDict does not follow setdefault #866
Add support for $type operator # 766
Fix tests for pymongo 2.8+ #877
No module named ‘django.utils.importlib’ (Django dev) #872
Field Choices Now Accept Subclasses of Documents
Ensure Indexes before Each Save #812
Generate Unique Indices for Lists of EmbeddedDocuments #358
Sparse fields #515
write_concern not in params of Collection#remove #801
Better BaseDocument equality check when not saved #798
OperationError: Shard Keys are immutable. Tried to update id even though the document is not yet saved #771
with_limit_and_skip for count should default like in pymongo #759
Fix storing value of precision attribute in DecimalField #787
Set attribute to None does not work (at least for fields with default values) #734
Querying by a field defined in a subclass raises InvalidQueryError #744
Add Support For MongoDB 2.6.X’s maxTimeMS #778
abstract shouldn’t be inherited in EmbeddedDocument # 789
Allow specifying the ‘_cls’ as a field for indexes #397
Stop ensure_indexes running on a secondaries unless connection is through mongos #746
Not overriding default values when loading a subset of fields #399
Saving document doesn’t create new fields in existing collection #620
Added Queryset.aggregate wrapper to aggregation framework #703
Added support to show original model fields on to_json calls instead of db_field #697
Added Queryset.search_text to Text indexes searchs #700
Fixed tests for Django 1.7 #696
Follow ReferenceFields in EmbeddedDocuments with select_related #690
Added preliminary support for text indexes #680
Added elemMatch operator as well - match is too obscure #653
Added support for progressive JPEG #486 #548
Allow strings to be used in index creation #675
Fixed EmbeddedDoc weakref proxy issue #592
Fixed nested reference field distinct error #583
Fixed change tracking on nested MapFields #539
Dynamic fields in embedded documents now visible to queryset.only() / qs.exclude() #425 #507
Add authentication_source option to register_connection #178 #464 #573 #580 #590
Implemented equality between Documents and DBRefs #597
Fixed ReferenceField inside nested ListFields dereferencing problem #368
Added the ability to reload specific document fields #100
Added db_alias support and fixes for custom map/reduce output #586
post_save signal now has access to delta information about field changes #594 #589
Don’t query with $orderby for qs.get() #600
Fix id shard key save issue #636
Fixes issue with recursive embedded document errors #557
Fix clear_changed_fields() clearing unsaved documents bug #602
Removing support for Django 1.4.x, pymongo 2.5.x, pymongo 2.6.x.
Removing support for Python < 2.6.6
Fixed $maxDistance location for geoJSON $near queries with MongoDB 2.6+ #664
QuerySet.modify() and Document.modify() methods to provide find_and_modify() like behaviour #677 #773
Added support for the using() method on a queryset #676
PYPY support #673
Connection pooling #674
Avoid to open all documents from cursors in an if stmt #655
Ability to clear the ordering #657
Raise NotUniqueError in Document.update() on pymongo.errors.DuplicateKeyError #626
Slots - memory improvements #625
Fixed incorrectly split a query key when it ends with “_” #619
Geo docs updates #613
Workaround a dateutil bug #608
Conditional save for atomic-style operations #511
Allow dynamic dictionary-style field access #559
Increase email field length to accommodate new TLDs #726
index_cls is ignored when deciding to set _cls as index prefix #733
Make ‘db’ argument to connection optional #737
Allow atomic update for the entire DictField #742
Added MultiPointField, MultiLineField, MultiPolygonField
Fix multiple connections aliases being rewritten #748
Fixed a few instances where reverse_delete_rule was written as reverse_delete_rules. #791
Make in_bulk() respect no_dereference() #775
Handle None from model __str__; Fixes #753 #754
_get_changed_fields fix for embedded documents with id field. #925
8.18. Changes in 0.8.7¶
Calling reload on deleted / nonexistent documents raises DoesNotExist (#538)
Stop ensure_indexes running on a secondaries (#555)
Fix circular import issue with django auth (#531) (#545)
8.19. Changes in 0.8.6¶
Fix django auth import (#531)
8.20. Changes in 0.8.5¶
Fix multi level nested fields getting marked as changed (#523)
Django 1.6 login fix (#522) (#527)
Django 1.6 session fix (#509)
EmbeddedDocument._instance is now set when setting the attribute (#506)
Fixed EmbeddedDocument with ReferenceField equality issue (#502)
Fixed GenericReferenceField serialization order (#499)
Fixed count and none bug (#498)
Fixed bug with .only() and DictField with digit keys (#496)
Added user_permissions to Django User object (#491, #492)
Fix updating Geo Location fields (#488)
Fix handling invalid dict field value (#485)
Added app_label to MongoUser (#484)
Use defaults when host and port are passed as None (#483)
Fixed distinct casting issue with ListField of EmbeddedDocuments (#470)
Fixed Django 1.6 sessions (#454, #480)
8.21. Changes in 0.8.4¶
Remove database name necessity in uri connection schema (#452)
Fixed “$pull” semantics for nested ListFields (#447)
Allow fields to be named the same as query operators (#445)
Updated field filter logic - can now exclude subclass fields (#443)
Fixed dereference issue with embedded listfield referencefields (#439)
Fixed slice when using inheritance causing fields to be excluded (#437)
Fixed ._get_db() attribute after a Document.switch_db() (#441)
Dynamic Fields store and recompose Embedded Documents / Documents correctly (#449)
Handle dynamic fieldnames that look like digits (#434)
Added get_user_document and improve mongo_auth module (#423)
Added str representation of GridFSProxy (#424)
Update transform to handle docs erroneously passed to unset (#416)
Fixed indexing - turn off _cls (#414)
Fixed dereference threading issue in ComplexField.__get__ (#412)
Fixed QuerySetNoCache.count() caching (#410)
Don’t follow references in _get_changed_fields (#422, #417)
Allow args and kwargs to be passed through to_json (#420)
8.22. Changes in 0.8.3¶
Fixed EmbeddedDocuments with id also storing _id (#402)
Added get_proxy_object helper to filefields (#391)
Added QuerySetNoCache and QuerySet.no_cache() for lower memory consumption (#365)
Fixed sum and average mapreduce dot notation support (#375, #376, #393)
Fixed as_pymongo to return the id (#386)
Document.select_related() now respects db_alias (#377)
Reload uses shard_key if applicable (#384)
Dynamic fields are ordered based on creation and stored in _fields_ordered (#396)
Potential breaking change: http://docs.mongoengine.org/en/latest/upgrade.html#to-0-8-3
Fixed pickling dynamic documents _dynamic_fields (#387)
Fixed ListField setslice and delslice dirty tracking (#390)
Added Django 1.5 PY3 support (#392)
Added match ($elemMatch) support for EmbeddedDocuments (#379)
Fixed weakref being valid after reload (#374)
Fixed queryset.get() respecting no_dereference (#373)
Added full_result kwarg to update (#380)
8.23. Changes in 0.8.2¶
Added compare_indexes helper (#361)
Fixed cascading saves which weren’t turned off as planned (#291)
Fixed Datastructures so instances are a Document or EmbeddedDocument (#363)
Improved cascading saves write performance (#361)
Fixed ambiguity and differing behaviour regarding field defaults (#349)
ImageFields now include PIL error messages if invalid error (#353)
Added lock when calling doc.Delete() for when signals have no sender (#350)
Reload forces read preference to be PRIMARY (#355)
Querysets are now lest restrictive when querying duplicate fields (#332, #333)
FileField now honouring db_alias (#341)
Removed customised __set__ change tracking in ComplexBaseField (#344)
Removed unused var in _get_changed_fields (#347)
Added pre_save_post_validation signal (#345)
DateTimeField now auto converts valid datetime isostrings into dates (#343)
DateTimeField now uses dateutil for parsing if available (#343)
Fixed Doc.objects(read_preference=X) not setting read preference (#352)
Django session ttl index expiry fixed (#329)
Fixed pickle.loads (#342)
Documentation fixes
8.24. Changes in 0.8.1¶
Fixed Python 2.6 django auth importlib issue (#326)
Fixed pickle unsaved document regression (#327)
8.25. Changes in 0.8.0¶
Fixed querying ReferenceField custom_id (#317)
Fixed pickle issues with collections (#316)
Added get_next_value preview for SequenceFields (#319)
Added no_sub_classes context manager and queryset helper (#312)
Querysets now utilises a local cache
Changed __len__ behaviour in the queryset (#247, #311)
Fixed querying string versions of ObjectIds issue with ReferenceField (#307)
Added $setOnInsert support for upserts (#308)
Upserts now possible with just query parameters (#309)
Upserting is the only way to ensure docs are saved correctly (#306)
Fixed register_delete_rule inheritance issue
Fix cloning of sliced querysets (#303)
Fixed update_one write concern (#302)
Updated minimum requirement for pymongo to 2.5
Add support for new geojson fields, indexes and queries (#299)
If values cant be compared mark as changed (#287)
Ensure as_pymongo() and to_json honour only() and exclude() (#293)
Document serialization uses field order to ensure a strict order is set (#296)
DecimalField now stores as float not string (#289)
UUIDField now stores as a binary by default (#292)
Added Custom User Model for Django 1.5 (#285)
Cascading saves now default to off (#291)
ReferenceField now store ObjectId’s by default rather than DBRef (#290)
Added ImageField support for inline replacements (#86)
Added SequenceField.set_next_value(value) helper (#159)
Updated .only() behaviour - now like exclude it is chainable (#202)
Added with_limit_and_skip support to count() (#235)
Objects queryset manager now inherited (#256)
Updated connection to use MongoClient (#262, #274)
Fixed db_alias and inherited Documents (#143)
Documentation update for document errors (#124)
Deprecated get_or_create (#35)
Updated inheritable objects created by upsert now contain _cls (#118)
Added support for creating documents with embedded documents in a single operation (#6)
Added to_json and from_json to Document (#1)
Added to_json and from_json to QuerySet (#131)
Updated index creation now tied to Document class (#102)
Added none() to queryset (#127)
Updated SequenceFields to allow post processing of the calculated counter value (#141)
Added clean method to documents for pre validation data cleaning (#60)
Added support setting for read prefrence at a query level (#157)
Added _instance to EmbeddedDocuments pointing to the parent (#139)
Inheritance is off by default (#122)
Remove _types and just use _cls for inheritance (#148)
Only allow QNode instances to be passed as query objects (#199)
Dynamic fields are now validated on save (#153) (#154)
Added support for multiple slices and made slicing chainable. (#170) (#190) (#191)
Fixed GridFSProxy __getattr__ behaviour (#196)
Fix Django timezone support (#151)
Simplified Q objects, removed QueryTreeTransformerVisitor (#98) (#171)
FileFields now copyable (#198)
Querysets now return clones and are no longer edit in place (#56)
Added support for $maxDistance (#179)
Uses getlasterror to test created on updated saves (#163)
Fixed inheritance and unique index creation (#140)
Fixed reverse delete rule with inheritance (#197)
Fixed validation for GenericReferences which haven’t been dereferenced
Added switch_db context manager (#106)
Added switch_db method to document instances (#106)
Added no_dereference context manager (#82) (#61)
Added switch_collection context manager (#220)
Added switch_collection method to document instances (#220)
Added support for compound primary keys (#149) (#121)
Fixed overriding objects with custom manager (#58)
Added no_dereference method for querysets (#82) (#61)
Undefined data should not override instance methods (#49)
Added Django Group and Permission (#142)
Added Doc class and pk to Validation messages (#69)
Fixed Documents deleted via a queryset don’t call any signals (#105)
Added the “get_decoded” method to the MongoSession class (#216)
Fixed invalid choices error bubbling (#214)
Updated Save so it calls $set and $unset in a single operation (#211)
Fixed inner queryset looping (#204)
8.26. Changes in 0.7.10¶
Fix UnicodeEncodeError for dbref (#278)
Allow construction using positional parameters (#268)
Updated EmailField length to support long domains (#243)
Added 64-bit integer support (#251)
Added Django sessions TTL support (#224)
Fixed issue with numerical keys in MapField(EmbeddedDocumentField()) (#240)
Fixed clearing _changed_fields for complex nested embedded documents (#237, #239, #242)
Added “id” back to _data dictionary (#255)
Only mark a field as changed if the value has changed (#258)
Explicitly check for Document instances when dereferencing (#261)
Fixed order_by chaining issue (#265)
Added dereference support for tuples (#250)
Resolve field name to db field name when using distinct(#260, #264, #269)
Added kwargs to doc.save to help interop with django (#223, #270)
Fixed cloning querysets in PY3
Int fields no longer unset in save when changed to 0 (#272)
Fixed ReferenceField query chaining bug fixed (#254)
8.27. Changes in 0.7.9¶
Better fix handling for old style _types
Embedded SequenceFields follow collection naming convention
8.28. Changes in 0.7.8¶
Fix sequence fields in embedded documents (#166)
Fix query chaining with .order_by() (#176)
Added optional encoding and collection config for Django sessions (#180, #181, #183)
Fixed EmailField so can add extra validation (#173, #174, #187)
Fixed bulk inserts can now handle custom pk’s (#192)
Added as_pymongo method to return raw or cast results from pymongo (#193)
8.29. Changes in 0.7.7¶
Fix handling for old style _types
8.30. Changes in 0.7.6¶
Unicode fix for repr (#133)
Allow updates with match operators (#144)
Updated URLField - now can have a override the regex (#136)
Allow Django AuthenticationBackends to work with Django user (hmarr/mongoengine#573)
Fixed reload issue with ReferenceField where dbref=False (#138)
8.31. Changes in 0.7.5¶
ReferenceFields with dbref=False use ObjectId instead of strings (#134) See ticket for upgrade notes (#134)
8.32. Changes in 0.7.4¶
Fixed index inheritance issues - firmed up testcases (#123) (#125)
8.33. Changes in 0.7.3¶
Reverted EmbeddedDocuments meta handling - now can turn off inheritance (#119)
8.34. Changes in 0.7.2¶
Update index spec generation so its not destructive (#113)
8.35. Changes in 0.7.1¶
Fixed index spec inheritance (#111)
8.36. Changes in 0.7.0¶
Updated queryset.delete so you can use with skip / limit (#107)
Updated index creation allows kwargs to be passed through refs (#104)
Fixed Q object merge edge case (#109)
Fixed reloading on sharded documents (hmarr/mongoengine#569)
Added NotUniqueError for duplicate keys (#62)
Added custom collection / sequence naming for SequenceFields (#92)
Fixed UnboundLocalError in composite index with pk field (#88)
Updated ReferenceField’s to optionally store ObjectId strings this will become the default in 0.8 (#89)
Added FutureWarning - save will default to cascade=False in 0.8
Added example of indexing embedded document fields (#75)
Fixed ImageField resizing when forcing size (#80)
Add flexibility for fields handling bad data (#78)
Embedded Documents no longer handle meta definitions
Use weakref proxies in base lists / dicts (#74)
Improved queryset filtering (hmarr/mongoengine#554)
Fixed Dynamic Documents and Embedded Documents (hmarr/mongoengine#561)
Fixed abstract classes and shard keys (#64)
Fixed Python 2.5 support
Added Python 3 support (thanks to Laine Heron)
8.37. Changes in 0.6.20¶
Added support for distinct and db_alias (#59)
Improved support for chained querysets when constraining the same fields (hmarr/mongoengine#554)
Fixed BinaryField lookup re (#48)
8.38. Changes in 0.6.19¶
Added Binary support to UUID (#47)
Fixed MapField lookup for fields without declared lookups (#46)
Fixed BinaryField python value issue (#48)
Fixed SequenceField non numeric value lookup (#41)
Fixed queryset manager issue (#52)
Fixed FileField comparision (hmarr/mongoengine#547)
8.39. Changes in 0.6.18¶
Fixed recursion loading bug in _get_changed_fields
8.40. Changes in 0.6.17¶
Fixed issue with custom queryset manager expecting explict variable names
8.41. Changes in 0.6.16¶
Fixed issue where db_alias wasn’t inherited
8.42. Changes in 0.6.15¶
Updated validation error messages
Added support for null / zero / false values in item_frequencies
Fixed cascade save edge case
Fixed geo index creation through reference fields
Added support for args / kwargs when using @queryset_manager
Deref list custom id fix
8.43. Changes in 0.6.14¶
Fixed error dict with nested validation
Fixed Int/Float fields and not equals None
Exclude tests from installation
Allow tuples for index meta
Fixed use of str in instance checks
Fixed unicode support in transform update
Added support for add_to_set and each
8.44. Changes in 0.6.13¶
Fixed EmbeddedDocument db_field validation issue
Fixed StringField unicode issue
Fixes __repr__ modifying the cursor
8.45. Changes in 0.6.12¶
Fixes scalar lookups for primary_key
Fixes error with _delta handling DBRefs
8.46. Changes in 0.6.11¶
Fixed inconsistency handling None values field attrs
Fixed map_field embedded db_field issue
Fixed .save() _delta issue with DbRefs
Fixed Django TestCase
Added cmp to Embedded Document
Added PULL reverse_delete_rule
Fixed CASCADE delete bug
Fixed db_field data load error
Fixed recursive save with FileField
8.47. Changes in 0.6.10¶
Fixed basedict / baselist to return super(..)
Promoted BaseDynamicField to DynamicField
8.48. Changes in 0.6.9¶
Fixed sparse indexes on inherited docs
Removed FileField auto deletion, needs more work maybe 0.7
8.49. Changes in 0.6.8¶
Fixed FileField losing reference when no default set
Removed possible race condition from FileField (grid_file)
Added assignment to save, can now do: b = MyDoc(**kwargs).save()
Added support for pull operations on nested EmbeddedDocuments
Added support for choices with GenericReferenceFields
Added support for choices with GenericEmbeddedDocumentFields
Fixed Django 1.4 sessions first save data loss
FileField now automatically delete files on .delete()
Fix for GenericReference to_mongo method
Fixed connection regression
Updated Django User document, now allows inheritance
8.50. Changes in 0.6.7¶
Fixed indexing on ‘_id’ or ‘pk’ or ‘id’
Invalid data from the DB now raises a InvalidDocumentError
Cleaned up the Validation Error - docs and code
Added meta auto_create_index so you can disable index creation
Added write concern options to inserts
Fixed typo in meta for index options
Bug fix Read preference now passed correctly
Added support for File like objects for GridFS
Fix for #473 - Dereferencing abstracts
8.51. Changes in 0.6.6¶
Django 1.4 fixed (finally)
Added tests for Django
8.52. Changes in 0.6.5¶
More Django updates
8.53. Changes in 0.6.4¶
Refactored connection / fixed replicasetconnection
Bug fix for unknown connection alias error message
Sessions support Django 1.3 and Django 1.4
Minor fix for ReferenceField
8.54. Changes in 0.6.3¶
Updated sessions for Django 1.4
Bug fix for updates where listfields contain embedded documents
Bug fix for collection naming and mixins
8.55. Changes in 0.6.2¶
Updated documentation for ReplicaSet connections
Hack round _types issue with SERVER-5247 - querying other arrays may also cause problems.
8.56. Changes in 0.6.1¶
Fix for replicaSet connections
8.57. Changes in 0.6¶
Added FutureWarning to inherited classes not declaring ‘allow_inheritance’ as the default will change in 0.7
Added support for covered indexes when inheritance is off
No longer always upsert on save for items with a ‘_id’
Error raised if update doesn’t have an operation
DeReferencing is now thread safe
Errors raised if trying to perform a join in a query
Updates can now take __raw__ queries
Added custom 2D index declarations
Added replicaSet connection support
Updated deprecated imports from pymongo (safe for pymongo 2.2)
Added uri support for connections
Added scalar for efficiently returning partial data values (aliased to values_list)
Fixed limit skip bug
Improved Inheritance / Mixin
Added sharding support
Added pymongo 2.1 support
Fixed Abstract documents can now declare indexes
Added db_alias support to individual documents
Fixed GridFS documents can now be pickled
Added Now raises an InvalidDocumentError when declaring multiple fields with the same db_field
Added InvalidQueryError when calling with_id with a filter
Added support for DBRefs in distinct()
Fixed issue saving False booleans
Fixed issue with dynamic documents deltas
Added Reverse Delete Rule support to ListFields - MapFields aren’t supported
Added customisable cascade kwarg options
Fixed Handle None values for non-required fields
Removed Document._get_subclasses() - no longer required
Fixed bug requiring subclasses when not actually needed
Fixed deletion of dynamic data
Added support for the $elementMatch operator
Added reverse option to SortedListFields
Fixed dereferencing - multi directional list dereferencing
Fixed issue creating indexes with recursive embedded documents
Fixed recursive lookup in _unique_with_indexes
Fixed passing ComplexField defaults to constructor for ReferenceFields
Fixed validation of DictField Int keys
Added optional cascade saving
Fixed dereferencing - max_depth now taken into account
Fixed document mutation saving issue
Fixed positional operator when replacing embedded documents
Added Non-Django Style choices back (you can have either)
Fixed __repr__ of a sliced queryset
Added recursive validation error of documents / complex fields
Fixed breaking during queryset iteration
Added pre and post bulk-insert signals
Added ImageField - requires PIL
Fixed Reference Fields can be None in get_or_create / queries
Fixed accessing pk on an embedded document
Fixed calling a queryset after drop_collection now recreates the collection
Add field name to validation exception messages
Added UUID field
Improved efficiency of .get()
Updated ComplexFields so if required they won’t accept empty lists / dicts
Added spec file for rpm-based distributions
Fixed ListField so it doesnt accept strings
Added DynamicDocument and EmbeddedDynamicDocument classes for expando schemas
8.58. Changes in v0.5.2¶
A Robust Circular reference bugfix
8.59. Changes in v0.5.1¶
Fixed simple circular reference bug
8.60. Changes in v0.5¶
Added InvalidDocumentError - so Document core methods can’t be overwritten
Added GenericEmbeddedDocument - so you can embed any type of embeddable document
Added within_polygon support - for those with mongodb 1.9
Updated sum / average to use map_reduce as db.eval doesn’t work in sharded environments
Added where() - filter to allowing users to specify query expressions as Javascript
Added SequenceField - for creating sequential counters
Added update() convenience method to a document
Added cascading saves - so changes to Referenced documents are saved on .save()
Added select_related() support
Added support for the positional operator
Updated geo index checking to be recursive and check in embedded documents
Updated default collection naming convention
Added Document Mixin support
Fixed queryet __repr__ mid iteration
Added hint() support, so can tell Mongo the proper index to use for the query
Fixed issue with inconsistent setting of _cls breaking inherited referencing
Added help_text and verbose_name to fields to help with some form libs
Updated item_frequencies to handle embedded document lookups
Added delta tracking now only sets / unsets explicitly changed fields
Fixed saving so sets updated values rather than overwrites
Added ComplexDateTimeField - Handles datetimes correctly with microseconds
Added ComplexBaseField - for improved flexibility and performance
Added get_FIELD_display() method for easy choice field displaying
Added queryset.slave_okay(enabled) method
Updated queryset.timeout(enabled) and queryset.snapshot(enabled) to be chainable
Added insert method for bulk inserts
Added blinker signal support
Added query_counter context manager for tests
Added map_reduce method item_frequencies and set as default (as db.eval doesn’t work in sharded environments)
Added inline_map_reduce option to map_reduce
Updated connection exception so it provides more info on the cause.
Added searching multiple levels deep in
DictField
Added
DictField
entries containing strings to use matching operatorsAdded
MapField
, similar toDictField
Added Abstract Base Classes
Added Custom Objects Managers
Added sliced subfields updating
Added
NotRegistered
exception if dereferencingDocument
not in the registryAdded a write concern for
save
,update
,update_one
andget_or_create
Added slicing / subarray fetching controls
Fixed various unique index and other index issues
Fixed threaded connection issues
Added spherical geospatial query operators
Updated queryset to handle latest version of pymongo map_reduce now requires an output.
Added
Document
__hash__, __ne__ for picklingAdded
FileField
optional size arg for read methodFixed
FileField
seek and tell methods for reading filesAdded
QuerySet.clone
to support copying querysetsFixed item_frequencies when using name thats the same as a native js function
Added reverse delete rules
Fixed issue with unset operation
Fixed Q-object bug
Added
QuerySet.all_fields
resets previous .only() and .exclude()Added
QuerySet.exclude
Added django style choices
Fixed order and filter issue
Added
QuerySet.only
subfield supportAdded creation_counter to
BaseField
allowing fields to be sorted in the way the user has specified themFixed various errors
Added many tests
8.61. Changes in v0.4¶
Added
GridFSStorage
Django storage backendAdded
FileField
for GridFS supportNew Q-object implementation, which is no longer based on Javascript
Added
SortedListField
Added
EmailField
Added
GeoPointField
Added
exact
andiexact
match operators toQuerySet
Added
get_document_or_404
andget_list_or_404
Django shortcutsAdded new query operators for Geo queries
Added
not
query operatorAdded new update operators:
pop
andadd_to_set
Added
__raw__
query parameterAdded support for custom querysets
Fixed document inheritance primary key issue
Added support for querying by array element position
Base class can now be defined for
DictField
Fixed MRO error that occured on document inheritance
Added
QuerySet.distinct
,QuerySet.create
,QuerySet.snapshot
,QuerySet.timeout
andQuerySet.all
Subsequent calls to
connect()
now workIntroduced
min_length
forStringField
Fixed multi-process connection issue
Other minor fixes
8.62. Changes in v0.3¶
Added MapReduce support
Added
contains
,startswith
andendswith
query operators (and case-insensitive versions that are prefixed with ‘i’)Deprecated fields’
name
parameter, replaced withdb_field
Added
QuerySet.only
for only retrieving specific fieldsAdded
QuerySet.in_bulk()
for bulk querying using idsQuerySet
s now have arewind()
method, which is called automatically when the iterator is exhausted, allowingQuerySet
s to be reusedAdded
DictField
Added
URLField
Added
DecimalField
Added
BinaryField
Added
GenericReferenceField
Added
get()
andget_or_create()
methods toQuerySet
ReferenceField
s may now reference the document they are defined on (recursive references) and documents that have not yet been definedDocument
objects may now be compared for equality (equal if _ids are equal and documents are of same type)QuerySet
update methods now have anupsert
parameterAdded field name substitution for Javascript code (allows the user to use the Python names for fields in JS, which are later substituted for the real field names)
Q
objects now support regex queryingFixed bug where referenced documents within lists weren’t properly dereferenced
ReferenceField
s may now be queried using their _idFixed bug where
EmbeddedDocuments
couldn’t be non-polymorphicqueryset_manager
functions now accept two arguments – the document class as the first and the queryset as the secondFixed bug where
QuerySet.exec_js
ignoredQ
objectsOther minor fixes
8.63. Changes in v0.2.2¶
Fixed bug that prevented indexes from being used on
ListField
sDocument.filter()
added as an alias toDocument.__call__()
validate()
may now be used onEmbeddedDocument
s
8.64. Changes in v0.2.1¶
Added a MongoEngine backend for Django sessions
Added
force_insert
toDocument.save()
Improved querying syntax for
ListField
andEmbeddedDocumentField
Added support for user-defined primary keys (
_id
in MongoDB)
8.65. Changes in v0.2¶
Added
Q
class for building advanced queriesAdded
QuerySet
methods for atomic updates to documentsFields may now specify
unique=True
to enforce uniqueness across a collectionAdded option for default document ordering
Fixed bug in index definitions
8.66. Changes in v0.1.3¶
Added Django authentication backend
Added
Document.meta
support for indexes, which are ensured just before querying takes placeA few minor bugfixes
8.67. Changes in v0.1.2¶
Query values may be processed before before being used in queries
Made connections lazy
Fixed bug in Document dictionary-style access
Added
BooleanField
Added
Document.reload()
method
8.68. Changes in v0.1.1¶
Documents may now use capped collections