Я попытался много способов, чтобы обновить существующий BSON документ, но он никогда не меняется в моей MongoDB:сохранить/обновить (Мопед) BSON :: Документ с рубином
col = db["collection"]
col.insert({"ben": 1})
doc = col.find().to_a.first
# => {"_id"=>BSON::ObjectId('556c7f1b167e70640070a4d9'), "ben"=>1}
первой попытке обновить:
doc.merge!({"ben": 5, "ams": 6})
col.find().to_a.first
# => {"_id"=>BSON::ObjectId('556c7f1b167e70640070a4d9'), "ben"=>1}
вторая попытка обновить:
doc.update({"ben": 5, "ams": 6})
col.find().to_a.first
# => {"_id"=>BSON::ObjectId('556c7f1b167e70640070a4d9'), "ben"=>1}
третья попытка ...
doc["ben"] = 5
doc["ams"] = 6
doc.save
# NoMethodError: undefined method `save' for #<BSON::Document:0x00000003f284d0>
Как вы можете видеть, ни одно из перечисленных выше не работает для меня. Я не мог найти никаких других предложений поиска Google. Знаете ли вы способы обновления моего документа? Является ли это возможным?
Привет, ваша точка зрения очень ясна. Благодаря! Означает ли это, что я не могу обновлять документы во время итерации? (Например: 'col.find(). Each {| d | d.update (" ben ": 5," ams ": 6)}') – benams
Правильно, это не сработает, потому что 'd' будет просто простой хэш внутри блока 'each'. Вам понадобится 'col.find (: _ id => ...). Update (...)' внутри итерации. Обычно вы должны использовать экземпляры Mongoid, чтобы заботиться обо всем этом, мопед обычно используется только тогда, когда вы хотите напрямую поговорить с базой данных. –