我想知道是否有更简单(和更快)的可能性,通过查看密钥来创建/覆盖我的mongo数据库中的项目。
让我解释一下:
$('#smartsearch').on('select2:unselecting', function (e) {
alert('You clicked on X');
});
所以这是我的对象
今天,我需要以非常快的方式(经常)修改很多这些对象来更新data_table
今天我这样做:
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
进行操作吗?
或其他改善表现的想法?
谢谢!
答案 0 :(得分:0)
试试这个:
MyObject.find_or_create_by(my_key: "test").update_attributes(data_table: data)
在这种情况下,没有任何来自mongo端的性能优化,它将再次查询db,如果没有找到将创建一个新记录并将更新它 - 只需一行。
如果您不需要在模型上运行验证,则可以使用update_attributes
替换set
。