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
Si sigue estas pautas, puede crear de manera eficiente consultas OR/AND anidadas en Go usando el controlador MongoDB.
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