2013-12-06 3 views
0

Я хочу обновить документы в MongoDB через код Ruby. У меня есть документы документов документов, которые я хочу обновить только в определенной области. Я попробовал следующий код.Mongodb update document через ruby ​​не работает

collection.update({"_id".to_s => doc_id},{"$set"=> {"selected" => "false"}}) 

, а также

collection.update({"_id".to_s => doc_id},{"selected" => "false"}) 

Обе команды выполняют без каких-либо ошибок, но база данных остается неизменным.

ответ

0

According to the documentation, способ обновления документа являются

collection.update({"_id" => id}, doc) 

или

collection.update({"_id" => id}, {"$set" => {"name" => "MongoDB Ruby"}}) 

Идентификатор как ожидается, будет действительным идентификатор. Я не уверен, что строка принята, на случай, если вы ее конвертируете в BSON::ObjectId.

collection.update({"_id" => BSON::ObjectId.from_string(doc_id) }, {"$set" => {"selected" => "false" }}) 

Обязательно проверьте команда возвращает true.

Также обратите внимание, что если вы используете версию драйвера < 1.8, вы должны использовать :safe => true.

Драйвер отправляет команду getlasterror после каждой записи, чтобы гарантировать, что запись выполнена по умолчанию. До версии 1.8 драйвера записи не были подтверждены по умолчанию, и было необходимо явно указать параметр «: safe => true» для подтверждения записи. Это уже не так.

+0

спасибо ..converting строка doc_id для объекта bson исправлена – nnm