«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать вложенные запросы ИЛИ/И с помощью драйвера MongoDB Go?

Как создать вложенные запросы ИЛИ/И с помощью драйвера MongoDB Go?

Опубликовано 11 января 2025 г.
Просматривать:128

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

Вложенные логические запросы с драйвером MongoDB Go

Запросы MongoDB часто требуют использования вложенных логических операторов (И/ИЛИ) для фильтрации документов на основе по множеству критериев. В драйвере Go MongoDB вложенные логические запросы можно создавать с использованием типов bson.D и bson.M.

Построение вложенных запросов OR/AND

Чтобы создать вложенный запрос OR/AND, вам необходимо использовать тип bson.D для представления внешнего логического оператора (например, $and) и передавать в него элементы bson.E. Каждый элемент bson.E представляет пару поле-значение, где имя поля может быть логическим оператором (например, $or), а значение может быть bson.D или bson.A (для массивов).

Пример вложенного запроса ИЛИ/И

Рассмотрим запрос MongoDB:

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

Чтобы представить этот запрос в Go с помощью драйвера MongoDB, вы можете использовать следующий код:

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

В этом примере bson.D представляет внешний оператор $and, а bson.A представляет собой вложенный оператор $or. Каждый bson.D в $or представляет подзапрос.

Использование bson.M для вложенных запросов

Вы также можете использовать тип bson.M для представления вложенные запросы. bson.M — это интерфейс карты[строка]{}, который может содержать имена полей и соответствующие им значения. Значением может быть другой экземпляр bson.M, представляющий вложенный запрос.

Например, приведенный выше запрос можно представить с помощью bson.M следующим образом:

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

Рекомендации

  • Чтобы представить массив внутри логического оператора, используйте bson.A (например, bson.A{bson.M{"foo" : 1}}).
  • $and — это логический оператор по умолчанию, поэтому нет необходимости явно включать его в запрос.

Следуя этим рекомендациям, вы сможете эффективно создавать вложенные запросы ИЛИ/И в Go с помощью драйвера MongoDB.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3