"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como construir consultas OR/AND aninhadas com o driver MongoDB Go?

Como construir consultas OR/AND aninhadas com o driver MongoDB Go?

Publicado em 11/01/2025
Navegar:383

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

Consultas lógicas aninhadas com MongoDB Go Driver

As consultas do MongoDB geralmente exigem o uso de operadores lógicos aninhados (AND/OR) para filtrar documentos com base em múltiplos critérios. No driver Go MongoDB, consultas lógicas aninhadas podem ser construídas usando os tipos bson.D e bson.M.

Construindo consultas OR/AND aninhadas

Para criar um consulta OR/AND aninhada, você precisa usar o tipo bson.D para representar o operador lógico externo (por exemplo, $and) e passar elementos bson.E para ele. Cada elemento bson.E representa um par campo-valor, onde o nome do campo pode ser o operador lógico (por exemplo, $or) e o valor pode ser um bson.D ou um bson.A (para matrizes).

Exemplo de consulta OR/AND aninhada

Considere a consulta MongoDB:

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

Para representar esta consulta em Go usando o driver MongoDB, você pode usar o seguinte código:

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

Neste exemplo, o bson.D representa o operador $and externo e o bson.A representa o operador $or aninhado. Cada bson.D dentro de $or representa uma subconsulta.

Usando bson.M para consultas aninhadas

Você também pode usar o tipo bson.M para representar consultas aninhadas. bson.M é uma interface de mapa[string]{} que pode conter nomes de campos e seus valores correspondentes. O valor pode ser outra instância de bson.M, representando uma consulta aninhada.

Por exemplo, a consulta acima pode ser representada usando bson.M da seguinte forma:

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

Recomendações

  • Para representar uma matriz dentro de um operador lógico, use bson.A (por exemplo, bson.A{bson.M{"foo" : 1}}).
  • $and é o operador lógico padrão, portanto não é necessário incluí-lo explicitamente no query.

Seguindo essas diretrizes, você pode criar consultas OR/AND aninhadas com eficiência em Go usando o driver MongoDB.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3