ruby-on-rails - Rails - mongoid - 使用键创建和覆盖?

标签 ruby-on-rails ruby mongodb ruby-on-rails-4 mongoid

我想知道是否有任何更简单(和更快)的可能性通过查看键来创建/覆盖我的 mongo 数据库中的项目。

让我解释一下:

MyObject:

   #<MyObject _id: 5881e885049490276d1d85b9,
    data_table: [...],
    my_key: "test">

这就是我的目标

今天,我需要以非常快的方式(非常频繁地)修改很多论文对象,更新数据表

今天我这样做:

ct = MyObject.where(my_key: "test").first               
ct.update_attributes(data_table: data)

但我认为我失去了很多表演,对吧?

有一种方法可以像 create or update 使用键 my_key 来创建或覆盖项目?

或者任何其他提高性能的想法?

谢谢!

最佳答案

试试这个:

MyObject.find_or_create_by(my_key: "test").update_attributes(data_table: data)

在这种情况下,mongo 方面没有任何性能优化,它将再次查询数据库,如果没有找到,将创建一条新记录并更新它 - 仅在一行中。

如果您不需要在模型上运行验证,另一个优化是将 update_attributes 替换为 set

关于ruby-on-rails - Rails - mongoid - 使用键创建和覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41762072/

相关文章:

mongodb - 根据状态过滤 mongoDb 中的结果

mongodb - Mongodb 设计,嵌入与关系

html - 在 ruby​​ on rails 中忽略媒体查询

mongodb - 如何强制 mongod 成为副本集中的主节点?

ruby-on-rails - 如何检查 Ruby 中用于 Gem 管理的 RVM 是否已正确安装?

ruby-on-rails - 得墨忒耳法则——你能走多远?

ruby-on-rails - 将事件管理员登录重定向到设计登录

ruby-on-rails - 如何让我的 rails 应用程序解决错误?

ruby - 罗莎琳德:SUBS 在给定的案例中失败了

ruby-on-rails - 样式表或 JavaScript 文件的 Rails 404 错误