Я пытаюсь perfom обновления на MongoDB, используя двигатель и tornadoweb со следующим кодом:обновление MongoDB с tornadoweb и двигателя водитель
@gen.coroutine
def set_project_status(self, pid, status):
try:
project = yield motor.Op(self.db[S.DB_PROJECT_TABLE].find_one, {'PID': pid})
logging.debug('set_project_status old_id {0}'.format(project['_id']))
project_update = yield motor.Op(self.db[S.DB_PROJECT_TABLE].update,
{'_id': ObjectId(project['_id'])}, {'STATUS': status})
logging.debug('set_project_status saving')
save = yield motor.Op(self.db[S.DB_PROJECT_TABLE].save, project_update)
logging.debug('set_project_status saved {0}'.format(save))
logging.debug('set_project_status saved id {0}'.format(project_update))
project = yield motor.Op(self.db[S.DB_PROJECT_TABLE].find_one, {'PID': pid})
logging.debug('set_project_status project {0}'.format(project))
raise gen.Return(True)
except Exception,e:
logging.debug('{0} {1} {2}'.format(pid, status, e))
raise gen.Return(False)
Что я получаю в журналах является:
set_project_status old_id 52d532d4b12c6478ce767a83
set_project_status saving
set_project_status saved 52d532d4b12c6478ce767a84
set_project_status saved id {u'ok': 1.0, u'err': None, u'connectionId': 2052, u'n': 1, u'updatedExisting': True, '_id': ObjectId('52d532d4b12c6478ce767a84')}
set_project_status project None
Я получаю некоторый промежуточный объект (u'updatedExisting?) И позже.
Кажется, я должен сделать кое-какие действия. Есть идеи?
Приветствует!
спасибо за исчерпывающий ответ. документация для чтения всегда является забытым преимуществом. после внесения указанных изменений в код функция работает правильно. 1. Первоначальная функция была странно длинной, по причинам отладки. 2. Yeap, я гарантирую уникальный индекс в PID для этой коллекции. 3. спасибо. – user1632928