0 / 0 / 0
Регистрация: 10.04.2010
Сообщений: 13

$and в MongoDB

14.12.2017, 11:38. Показов 1213. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток,

Уважаемые форумчане, помогите разобраться с назначением оператора $and.
В мануале написано, что из-за неявного and-ирования критериев, указанных через запятую, $and нужно применять при многократном использовании в find() одних и тех же полей или операторов в запросах.

NOTE
MongoDB provides an implicit AND operation when specifying a comma separated list of expressions. Using an explicit AND with the $and operator is necessary when the same field or operator has to be specified in multiple expressions.


С операторами все понятно, однако в примере для случая многократного использования одного поля в запросе в мануале приведен следующий код:
JavaScript
1
db.inventory.find( { $and: [ { price: { $ne: 1.99 } }, { price: { $exists: true } } ] } )
Но ведь этот запрос равнозначени следующему, без использования $and:

JavaScript
1
db.inventory.find(  { price: { $ne: 1.99 , $exists: true } }  )


Подскажите, пожалуйста, зачем в документации упоминается необходимость применения $and в случае многократного использования одного и того же поля, ведь можно обойтись и неявным $and-ированием.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.12.2017, 11:38
Ответы с готовыми решениями:

MongoDB + C++
Добрый день форумчане, у меня к вам следующий вопрос, ни кто не работал с MongoDB из С++, желательно из Qt, но не обязательно, знаю как что...

MongoDB и Windows 10
Здравствуйте. Я недавно открыл для себя существование Монго. Мне показалось, это та самая разновидность базы, которую я искал. Однако при...

Mongodb, Map-reduce
Всем привет. Нужно сделать запрос в MongoDB, который за кодом (хранится в одной коллекции) выводит название, которое хранится в другой...

1
 Аватар для ITL
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
25.12.2017, 11:22
Да, но у тебя может же быть достаточно сложный запрос, например у тебя все та же коллекция:
JavaScript
1
2
3
4
5
> db.inventory.find({},{_id: 0})
{ "region" : "UA", "price" : 1.9 }
{ "region" : "UA", "price" : 0.2 },
{ "region" : "UA", "price" : 3.0 },
{ "region" : "GB", "price" : 2.0 }
И тебе нужны только UA и что бы цена была либо 0.2 либо 3.0
То запрос будет:
JavaScript
1
2
3
4
5
> db.inventory.find({ 
  $and: [ 
    { $or: [ { price: 3.0 }, { price: 0.2 } ]} , 
    { region: "UA" } 
])
Если без $and тут будет сложно, потому-что ты не сможешь сделать запрос, типо такого:
JavaScript
1
> db.inventory.find({ price: 1.9 , price: 0.2 , region: "UA" }  })
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.12.2017, 11:22
Помогаю со студенческими работами здесь

Import to MongoDb from mySql
Добрый день. подскажите как можно сделать такое - у меня есть файл/скрипт с расширением .sql в котором идет создание таблицы и заполнение...

Не могу запустит MongoDB
День добрый. Подскажите, пожалуйста как запустить бд на Ubuntu. Всё делаю по инструкции, но при вызове mongo выдаёт такую ошибку ...

Node.js +MongoDB + Ubuntu
Всем привет! Столкнулся с трудностью по подключению Базы данных к проекту. Есть готовая база данных (папка с файлами). Нужно эту БД...

Скорость выборки в MongoDB
Есть таблица в монге, порядка 41К записей, 40 полей, из которых 30 - числовые, остальные - строки. Выборка из таблицы работает весьма не...

Mongodb windows не совместимость
Здравствуйте. Почему так, может кто-то сказать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru