mongoengine
                                
                                 mongoengine copied to clipboard
                                
                                    mongoengine copied to clipboard
                            
                            
                            
                        Mongoengine makes conflicting modifications to embedded documents
Some embedded document structures trip up delta tracking and cause saves to fail. For example, take the following script:
import mongoengine
class EmbeddedDoc(mongoengine.EmbeddedDocument):
    content = mongoengine.StringField()
    docs = mongoengine.ListField(mongoengine.EmbeddedDocumentField('EmbeddedDoc'))
class Doc(mongoengine.Document):
    docs = mongoengine.ListField(mongoengine.EmbeddedDocumentField(EmbeddedDoc))
mongoengine.connect('test')
Doc.objects.delete()
d = Doc()
d.docs = [EmbeddedDoc(content='1', docs=[])]
d.save()
d = Doc.objects[0]
e = EmbeddedDoc()
e.content = '2'
d.docs[0].docs.insert(0, e)
d.save()
The final call to save() fails with an error:
Traceback (most recent call last):
  File "break-mongoengine.py", line 24, in <module>
    d.save()
  File "/home/sm/Code/ma/venv/src/mongoengine/mongoengine/document.py", line 372, in save
    raise OperationError(message % six.text_type(err))
mongoengine.errors.OperationError: Could not save document (Cannot update 'docs.0.docs.0.content' and 'docs.0.docs' at the same time)