【问题标题】:mongoid update not updating existing fieldsmongoid 更新不更新现有字段
【发布时间】:2015-06-25 19:15:52
【问题描述】:

经过研究,我发现了这个link,它表明您可以在 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" } } )

根据thisstackoverflow 帖子,当第四个参数设置为 true 时,它​​应该会更新您的所有记录。但它不起作用。当我执行以下操作时:

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

然后查询mongodb:

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

如您所见,“苹果信息”保留在现有记录中。为什么不更新现有记录的名称?

【问题讨论】:

  • @muistooshort 我正在使用 Mongoid 4。

标签: ruby-on-rails ruby mongodb mongoid


【解决方案1】:

Mongoid4 中没有Contact.rename 方法,该方法似乎在 Mongoid3 中消失了。如果你想在 Mongoid3+ 中重命名一个字段,你想在查询中调用rename

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

【讨论】:

  • 你确定这应该更新 mongodb 数据库中的当前字段吗?我试过了,它没有更新数据库中的现有字段。
  • 我刚试过,它对我有用。您如何检查它是否不起作用?
猜你喜欢
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
相关资源
最近更新 更多