pythonmongodbmongokitnosql

How to update an object after find() with mongokit?


@connection.register 
class User(Document):

    __database__ = 'foo' 
    __collection__ = 'bar' 

    structure = {
    '_id' : ObjectId,
    'Email' : basestring,       
}


col = connection['uplace']['user']
user = col.find()[2]
user2 = User(user)
user2['Email'] = 'newEmail@rit.edu'
#connection.register([user])
#user['Wall'][1]['Reply'][0]['Message'] = 'test new message'
#print user
user2.save()

However when I run this, I receive the object and it is a instance of my UserDocument. But this exception is raised:

    server_version = tuple(self.connection.server_info()['version'].split("."))
  File "/Library/Python/2.7/site-packages/mongokit/document.py", line 628, in __getattribute__
    raise ConnectionError('No collection found') 
mongokit.mongo_exceptions.ConnectionError: No collection found

Solution

  • The right way is :

    user2 = col.User(user)
    user2.pop('_id')  # you should remove the _id or saving user2 will replace user
    user2["Email"] = "newEmail@rit.edu"
    user2.save()