2016-08-16 3 views
0

Я пытаюсь написать программу питона, которая находит и обновляет документ в MongoDB:PyMongo: глобальное имя «ReturnDocument» не определен

db.collection.find_one_and_update({"Machine": "24", "Available": True}, 
            {"$set": {"Overview.Available": False}}, 
            projection= {"_id": 0, "Machine": 1, "Available": 1}, 
            return_document= ReturnDocument.AFTER) 

Но я получаю следующее сообщение об ошибке (видимо, я не использует return_document правильно, но вся документация PyMongo говорит, что я)

NameError: global name 'ReturnDocument' is not defined

ответ

0

Вам нужно импортировать ReturnDocument класса первым. Добавьте это к верхней части вашего скрипта:

from pymongo.collection import ReturnDocument 

Подробные документы: http://api.mongodb.com/python/current/api/pymongo/collection.html#pymongo.collection.ReturnDocument

+0

Кажется работать сейчас, спасибо! pymongo и pymongo.collection оба, кажется, работают ... один лучше другого? что делает «.collection»? –

+0

Я никогда не пытался импортировать его непосредственно из 'pymongo'. Всегда используется документированный путь. – masnun

+0

Использование меньшего пакета должно быть более эффективным. Я буду использовать pymongo.collection –