Rails - mongoid - 使用key创建和覆盖?

3
我希望了解是否有更简单(和更快速)的方法来通过查看键创建/覆盖Mongo数据库中的项。
让我解释一下:
MyObject:

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

这是我的对象

今天,我需要以非常快的速度(很频繁地)更新数据表格,因此需要修改许多这些对象。

我现在的做法如下:

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

但是我认为我会失去很多性能,对吗?

有一种方法可以像使用关键字my_key创建或覆盖项那样执行创建或更新吗?

还有其他提高性能的想法吗?

谢谢!

1个回答

0

试试这个:

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

在这种情况下,Mongo没有任何性能优化,它将再次查询数据库,如果找不到记录,则会创建一个新记录并更新它 - 只需一行代码即可完成。
另一个优化方法是,如果您不需要在模型上运行验证,则使用set替换update_attributes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接