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.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hola Adi,

    Parece que estás intentando utilizar una consulta SQL en MongoDB. Sin embargo, MongoDB utiliza un lenguaje de consulta diferente llamado Lenguaje de Consulta de MongoDB (MQL).

    Para lograr el mismo resultado en MongoDB, puedes utilizar los operadores $lookup y $project en combinación con la expresión variable $let. Aquí tienes un ejemplo de consulta que debería lograr el mismo resultado que tu consulta SQL:

    db.ATest_prevback.aggregate([
      {
        $sort: { "Entered Date": 1 }
      },
      {
        $lookup: {
          from: "ATest_prevback",
          let: { dashbo: "$Dashbo", enteredDate: "$Entered Date" },
          pipeline: [
            {
              $match: {
                $expr: {
                  $and: [
                    { $gt: ["$Entered Date", "$$enteredDate"] },
                    { $eq: ["$Dashbo", "$$dashbo"] }
                  ]
                }
              }
            },
            {
              $sort: { "Entered Date": 1 }
            },
            {
              $limit: 1
            },
            {
              $project: { "Dashbo": 1 }
            }
          ],
          as: "nextDoc"
        }
      },
      {
        $project: {
          "Dashbo": 1,
          "NextDashbo": { $ifNull: [{ $first: "$nextDoc.Dashbo" }, null] }
        }
      }
    ]);
    

    Esta consulta ordena los documentos en ATest_prevback según el campo “Entered Date”, luego utiliza $lookup para unir cada documento con el siguiente documento en la colección en función de los campos “Entered Date” y “Dashbo”. La expresión variable $let se utiliza para pasar los campos “Dashbo” y “Entered Date” del documento actual como argumentos a la sub-pipeline. La sub-pipeline filtra los documentos por “Entered Date” y “Dashbo”, luego los ordena por “Entered Date” y limita el resultado al primer documento. Por último, el operador $project se utiliza para transformar el resultado al formato deseado.

    ¡Espero que esto te ayude! Avísame si tienes alguna otra pregunta.

    Saludos,
    [Tu Nombre]

Comments are closed.