Es la primera vez que uso MongoDB y tengo un problema con el que agradecería ayuda, por favor.
Digamos que tengo una colección llamada "estudiantes" con documentos en la colección estructurados de la siguiente manera:
{ "_id": ObjectId("12345"), "Name": "Joe Bloggs", "Class_Grade": "b" "Homework_Grade": "c", }
Quiero crear un documento incrustado llamado "Grades"
que contenga los campos de calificación de la clase y la tarea y lo aplique a todos los documentos de la colección para terminar con:
{ "_id": ObjectId("12345"), "Name": "Joe Bloggs", "Class_Grade": "b" "Homework_Grade": "c", "Grades": { "Class_Grade": "b", "Homework_Grade": "c", } }
He estado tratando de lograr esto usando updateMany() en MongoShell:
db.students.updateMany({}, {$set: {Grades: {"Class_Grade": $Class_Grade, "Homework_Grade": $Homework_grade"}}})
Sin embargo, al hacerlo, recibo un error de referencia: $Class_Grade
no está definido. Intenté modificar la referencia a $students.Class_Grade
y recibí el mismo error.
Su consejo sería muy apreciado
Hay algunos errores en su consulta,
si desea usar el valor del campo interno existente, debe usar una actualización con canalización de agregación a partir de MongoDB 4.2, debe envolver la parte de actualización en el corchete adjunto [], ya que agregué la consulta.
use una cita en el nombre del campo que desea usar del campo interno, por ejemplo: "$Class_Grade"
ha usado el campo $Homework_grade
y en sus documentos G
es mayúscula en Grade
, así que intente usar el nombre de campo exacto $Homework_Grade
db.students.updateMany({}, [ { $set: { Grades: { "Class_Grade": "$Class_Grade", "Homework_Grade": "$Homework_Grade" } } } ])