"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo construir consultas OR/AND anidadas con el controlador MongoDB Go?

¿Cómo construir consultas OR/AND anidadas con el controlador MongoDB Go?

Publicado el 2025-01-11
Navegar:528

How to Construct Nested OR/AND Queries with the MongoDB Go Driver?

Consultas lógicas anidadas con el controlador MongoDB Go

Las consultas de MongoDB a menudo requieren el uso de operadores lógicos anidados (Y/O) para filtrar documentos según en múltiples criterios. En el controlador Go MongoDB, se pueden construir consultas lógicas anidadas utilizando los tipos bson.D y bson.M.

Construcción de consultas OR/AND anidadas

Para crear una Para una consulta OR/AND anidada, debe utilizar el tipo bson.D para representar el operador lógico externo (por ejemplo, $and) y pasarle elementos bson.E. Cada elemento bson.E representa un par campo-valor, donde el nombre del campo puede ser el operador lógico (por ejemplo, $or) y el valor puede ser bson.D o bson.A (para matrices).

Ejemplo de consulta OR/AND anidada

Considere la consulta de MongoDB:

{
  "$and": {
    "p": 10,
    "$or": {
      "s": 30,
      "a": 1
    }
  }
}

Para representar esta consulta en Go usando el controlador MongoDB, puede usar el siguiente código:

filter := bson.D{
    {"p", 10},
    {"$or", bson.A{
        bson.D{{"s", 30}},
        bson.D{{"a", 1}},
    }},
}

En este ejemplo, bson.D representa el operador $and externo y bson.A representa el operador $or anidado. Cada bson.D dentro de $or representa una subconsulta.

Uso de bson.M para consultas anidadas

También puede usar el tipo bson.M para representar consultas anidadas. bson.M es una interfaz de mapa[cadena]{} que puede contener nombres de campos y sus valores correspondientes. El valor puede ser otra instancia de bson.M, que representa una consulta anidada.

Por ejemplo, la consulta anterior se puede representar usando bson.M de la siguiente manera:

filter := bson.M{
    "p": 10,
    "$or": bson.A{
        bson.M{"s": 30},
        bson.M{"a": 1},
    },
}

Recomendaciones

  • Para representar una matriz dentro de un operador lógico, use bson.A (por ejemplo, bson.A{bson.M{"foo" : 1}}).
  • $and es el operador lógico predeterminado, por lo que no es necesario incluirlo explícitamente en el consulta.

Si sigue estas pautas, puede crear de manera eficiente consultas OR/AND anidadas en Go usando el controlador MongoDB.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3