Me gustaría saber si hay posibilidades más simples (y más rápidas) para crear/anular un elemento en mi base de datos mongo mirando una clave.
Dejame explicar :
MyObject: #<MyObject _id: 5881e885049490276d1d85b9, data_table: [...], my_key: "test">así que este es mi objeto
Hoy, necesito modificar muchos de estos objetos de una manera muy rápida (muy a menudo) actualizando el data_table
Hoy hago esto:
ct = MyObject.where(my_key: "test").first ct.update_attributes(data_table: data)Pero creo que pierdo muchas actuaciones, ¿no?
¿Hay alguna manera de create or update usando la clave my_key para crear o anular el elemento?
¿O alguna otra idea para mejorar el rendimiento?
Gracias !
Prueba esto:
MyObject.find_or_create_by(my_key: "test").update_attributes(data_table: data)En este caso, no hay optimizaciones de rendimiento del lado de mongo, volverá a consultar db, si no se encuentra, creará un nuevo registro y lo actualizará, solo en una línea.
Otra optimización sería reemplazar update_attributes con set si no necesita ejecutar validaciones en su modelo.