2015-06-25 9 views
0

После исследований, я нашел этот link, который показывает, вы можете обновить поле динамически в Mongoid:Mongoid обновления не обновление существующего полех

Model#rename 
Performs MongoDB's $rename modifier that renames a field atomically. 

MONGOID 
person.rename(:bday, :dob) 

MONGODB COMMAND 
collections["people"].update( { "_id" : ... }, { "$rename" : { 
"bday" : "dob" } }) 

Согласно this StackOverflow поста, когда четвертый paraemeter устанавливаются в верно, должен обновить все ваши записи. Но это не работает. Когда я делаю следующее:

Contact.rename('apple info', 'new_info', false, true) 

А затем MongoDB запроса:

db.mongoid_container_contacts.find() 
{ "_id" : ObjectId("558c50256d6163b255060000"), "apple info" : "etretrytr", ... 

Как вы можете видеть, «яблоко информация» остается в существующих записях. Почему не обновляется имя существующих записей?

+0

@muistooshort Я использую Mongoid 4. – Donato

ответ

0

Существует нет Contact.rename метода в Mongoid4, этот метод, похоже, ушел в Mongoid3. Если вы хотите переименовать поле в Mongoid3 +, вы хотите вызвать rename по запросу:

Contact.all.rename('apple info' => 'new_info') 
+0

Вы уверены, что это, как предполагается обновить существующие поля в базе данных MongoDB? Я попробовал, и он не обновлял существующие поля в базе данных. – Donato

+0

Я просто попробовал, и это сработало для меня. Как вы проверяете, что это не сработало? –

Смежные вопросы