sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Es posible definir la clave al insertar en mongodb?

$push se utiliza para agregar un valor a una matriz. En su ejemplo, measurements es una matriz y Mongo está agregando $newData como su primer elemento. Esto explica el 0 índice entre measurements y levels . En el resultado deseado, measurements es un objeto equivalente a $newData (es decir, tiene un levels propiedad, que a su vez tiene una matriz de objetos dentro).

Cualquiera de los siguientes ejemplos debería lograr lo que desea:

// if $newData is {"levels": [{"level_qty":12,"level_uom":"ft"}]}
->set("measurements", $newData)

// if $newData is [{"level_qty":12,"level_uom":"ft"}]
->set("measurements.levels", $newData)

// if $newData is {"level_qty":12,"level_uom":"ft"}
->push("measurements.levels", $newData)

Nota:$push será más flexible si desea agregar datos con futuras actualizaciones, mientras que $set sobrescribirá naturalmente el campo dado.