MongoEngine/mongoengine

Mongoengine: Save not working - but PyMongo insert_one() works on same model

mg3146 opened this issue · 0 comments

I am having trouble getting mongoengine's .save() to actually save a new document, but I'm able to save the same document via pymongo.insert_one(). My model class is.

class BlotterItem(me.Document):    
    symbol = me.StringField(required = True)
    price = me.EmbeddedDocumentField(Price, required = True)
    trade_date = me.DateTimeField(required = True)
    exchange = me.StringField(max_length=120, required=True)
    tags = me.EmbeddedDocumentField(Strategy_Tags, required = True)
   
    # Document-Admin Fields
    last_update_date = me.DateTimeField()
    trade_id = me.StringField(required = True)
    document_version = me.IntField(default=1)
    
    # mongoengine stuff:
    meta = {'db_alias' : 'db1',
            'collection' : 'Blotter',
            'allow_inheritance': True}

In the interpreter, I would then try:

import mongoengine as me
me.connect(host = <conn_string>, alias = 'db1')

item = BlotterItem(<lots of stuff>)
item.save()   # <-- Checking the database, there is nothing there. So I try force_insert..

item.save(force_insert = True)   #<-- This throws the below error, even though nothing in the DB...

NotUniqueError: Tried to save duplicate unique keys (E11000 duplicate key error collection: test.Blotter index: _id_ dup key: { _id: ObjectId('63401b7e82967e682f0714e0') }

To see if I'm crazy, I then used PyMongo...

*skipping my code that gives me the PyMongo collection object*
collection.insert_one(item.to_mongo())    # <----- Works!!

So to me it doesn't seem like it's an issue with BlotterItem model because inserting via the .to_mongo() method works...

Any help is appreciated!