es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Establecer el valor en el tercer objeto de matriz anidada en MongoDB y PHP.

Tengo la siguiente estructura de un documento de MongoDB:

[{
  "id": {
    "$oid": "5fca578a983edc31764f80d2"
  },
  "nombre_clase": "Clase 1",
  "reuniones": [
    {
      "id": "1641278777739",
      "id_profesor": "5fca5769c4e2e859c71c7de2",
      "nombre_profesor": "Sra. Miller",
      "fechas": [
        {
          "id": 1641377951854,
          "reunion": "2022-01-07 1:08:00",
          "id_estudiante": null,
          "nombre_estudiante": null
        },
        {
          "id": 1641377970597,
          "reunion": "2022-01-26 11:19:00",
          "id_estudiante": null,
          "nombre_estudiante": null
        }
      ]
    }
  ]
}]

Tengo el ID del objeto que se encuentra en el arreglo de reuniones y el ID del objeto de fechas que está dentro de la reunión.
Quiero establecer el valor del estudiante_id dentro de fechas. Estoy utilizando MongoDB y el cliente en PHP de MongoDB. ¿Cómo puedo hacer eso?
Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para establecer el valor de student_id dentro de dates, puedes utilizar el método de actualización en el cliente de MongoDB PHP. Aquí tienes un ejemplo de código:

    $collection = (new MongoDB\Client)->nombre_base_de_datos->nombre_colección;
    
    $meeting_id = "1641278777739"; // id del objeto en el array meeting
    $date_id = 1641377951854; // id del objeto date dentro de meeting
    
    $filter = ["meeting.id" => $meeting_id, "meeting.dates.id" => $date_id];
    $update = ['$set' => ["meeting.$[].dates.$[date].student_id" => "tu_id_de_estudiante"]];
    
    $options = [
        'arrayFilters' => [['date.id' => $date_id]],
        'multi' => false
    ];
    
    $resultado = $collection->update(
        $filter,
        $update,
        $options
    );
    

    En el código anterior, primero creamos un filtro para encontrar el documento con el id de reunión y el id de fecha dados. Luego creamos un objeto de actualización utilizando el operador $set para establecer el valor de student_id en el array dates. Utilizamos el operador $[] para actualizar todos los elementos en el array meeting y el operador $[date] para actualizar el elemento coincidente en el array dates.

    Finalmente, especificamos las opciones para el método de actualización. Utilizamos la opción arrayFilters para especificar el filtro para los elementos del array y la opción multi para actualizar solo un documento.

    Después de ejecutar este código, el valor de student_id se actualizará en el objeto dates especificado.

Comments are closed.