我想知道是否有任何更简单(和更快)的可能性通过查看键来创建/覆盖我的 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/