MongoDB поддерживает несколько операторов, помогающих извлекать документ из баз данных. Классы операторов, поддерживаемые MongoDB, включают сравнение, логику, операторы элементов и так далее. Операторы $ in (произносится как «in» ) и $ nin ( Not IN ) в MongoDB относятся к классу сравнения операторов MongoDB. Эти операторы предназначены только для значений массива и могут фильтровать коллекцию на основе существующих или несуществующих значений. Например, оператор $ in ищет значения массива и отображает только те документы, которые соответствуют массиву, тогда как оператор $ nin помогает отображать только те документы, которые не содержат значений (которые передаются оператору $ nin).
В этой статье мы предоставим подробное руководство по использованию операторов $ in и $ nin в MongoDB:
Рекомендуется заполнить следующие пункты списка предварительных требований, чтобы перейти к применению этих операторов.
Предпосылки
Этот раздел содержит набор компонентов из MongoDB, которые необходимо принять, чтобы следовать этому руководству:
- База данных MongoDB
- Коллекция внутри базы данных
- Документы в коллекции
В этом посте мы будем использовать следующую базу данных и коллекцию для применения операторов $ in и $ nin:
Имя базы данных: bestprogrammer
Название коллекции: debian
Вы также должны вставить несколько документов в коллекцию.
- Как использовать операторы $in и $nin в MongoDB
- Как использовать оператор $ in в MongoDB
- Пример 1. Использование $ in для сопоставления значения
- Пример 2: Использование $ in для сопоставления значений массива
- Пример 3: использование $ in для соответствия регулярным выражениям
- Как использовать оператор $nin в MongoDB
- Пример 1. Использование $ nin для сопоставления значения
- Пример 2: Использование $ nin для сопоставления значения массива
- Пример 3. Использование $ nin для сопоставления регулярного выражения
- Заключение
Как использовать операторы $in и $nin в MongoDB
Эта статья разделена на две части; один относится к оператору $ in, а другой демонстрирует использование оператора $ nin.
Во-первых, мы проверим документы, доступные в нашей коллекции (чтобы мы могли выполнять соответствующие действия).
Подключитесь к MongoDB, выполнив следующую команду в терминале ubuntu: Замечено, что эта команда также автоматически подключит вас к оболочке mongo.
$ sudo mongo bestprogrammerlinuxhint
После этого вы можете получить отображение всех документов, доступных в вашей коллекции: Например, следующая команда поможет получить документы, доступные в коллекции » debian «:
> db.debian.find().pretty()
Как использовать оператор $ in в MongoDB
Оператор $ in будет искать массив и показать документ, соответствующий значению: Синтаксис $ in написан ниже:
{«field»: {$in:[«value1», «value2»,….]}}
Вы должны указать имя поля и значения, которые вы хотите найти:
Пример 1. Использование $ in для сопоставления значения
Оператор $ in может использоваться для сопоставления значения в поле и печати документов, соответствующих этому значению. Например, следующая команда отобразит все те документы, у которых » число » (поле) равно значению » 20 «: Поскольку только один документ содержит значение » 20 «; таким образом печатается только этот:
> db.debian.find({num: {$in: [20]}}).pretty()
Пример 2: Использование $ in для сопоставления значений массива
Более того, вы также можете использовать оператор $ in для поиска значений массива в базе данных MongoDB. В нашем случае указанная ниже команда отобразит документы со значениями » mike » и » jack » в поле » Авторы» :
> db.debian.find({Authors: {$in: [«mike», «jack»]}}).pretty()
Пример 3: использование $ in для соответствия регулярным выражениям
Оператор $ in также может использоваться для сопоставления значений, заданных регулярным выражением: указанная ниже команда отобразит документы, содержащие поле » Тип «, а строки в поле начинаются с » ab » или » cd «:
> db.debian.find({Type: {$in: [/^ab/, /^cd/]}}).pretty()
Как использовать оператор $nin в MongoDB
Оператор $ nin в MongoDB действует противоположно $ in; например, $ nin будет отображать документ, не содержащий указанного значения. Синтаксис похож на $ in и показан ниже:
{«filed»: {$nin:[«value1», «value2»….]}}
Пример 1. Использование $ nin для сопоставления значения
Как уже упоминалось, этот оператор $ nin не отображает документ, соответствующий значению. Следующая команда отобразит документы, которые не содержат » 20 » в поле «число»:
Результат ниже показывает, что напечатанные документы не содержат значения » 20 «:
> db.debian.find({num: {$nin: [20]}}).pretty()
Пример 2: Использование $ nin для сопоставления значения массива
Следующая команда отобразит документы, которые не содержат » mike » и » john » в поле » Авторы «. Поскольку ни один из документов не остался позади, потому что во всех документах есть » mike » или » john » в качестве автора, будет пустой вывод:
> db.debian.find({Authors: {$nin: [«mike», «john»]}}).pretty()
Пример 3. Использование $ nin для сопоставления регулярного выражения
Оператор $ nin также используется для получения документов на основе регулярных выражений; Например, в приведенной ниже команде выбрано поле » Тип «, и $ nin будет печатать те документы, в которых значение » Тип » не начинается с » ab » или » cd «:
Примечание. Метод » pretty () «, используемый в этой статье, предназначен только для получения вывода в структурированной форме; вы можете использовать только find (), чтобы получить тот же результат, но неструктурированным способом.
Заключение
Правильное управление данными — первоочередная задача любой организации. Они должны хранить данные, и при необходимости предпочтение отдается быстрому извлечению данных. Некоторые системы управления базами данных предоставляют такую функциональность, и MongoDB является одной из них. В этом посте мы описали использование двух операторов » $ in » и » $ nin «, которые помогают получать значения массива в базе данных MongoDB. Эти операторы помогают получить необходимые документы на основе значений, сопоставленных этими операторами. Оператор $ in печатает документ, содержащий совпадение; тогда как $ nin печатает те документы, которые не соответствуют значению.