Как использовать оператор where в MongoDB

MongoDB Программирование и разработка

MongoDB предоставляет надежную систему запросов, поддерживаемую несколькими командами и операторами. Существует длинный список операторов (таких как $ size, $ where, $ gt, $ regex и многие другие), которые расширили использование MongoDB для выполнения основных функций любой базы данных. Оператор $ where принадлежит к классу операторов оценочного запроса и может использоваться для передачи строки на основе JavaScript или функции JavaScript. Оператор $ where используется в MongoDB для получения только тех документов, которые соответствуют выражениям JavaScript.

В этом описательном посте мы рассказали об использовании оператора $ where в контексте MongoDB.

Как работает $ where в MongoDB

Замечено, что оператор $ where используется редко по сравнению с другими стандартными операторами MongoDB, такими как $ gt, $ lt, $ in и $ nin.

Как упоминалось ранее, оператор $ where работает только для строк на основе JS или только его функций, а синтаксис для использования оператора $ where упомянут ниже:

{$where: <JSstring|JSfunction>}

Замечено, что оператор $ where не может быть выполнен с несколькими стандартными функциями MongoDB, такими как db. Оператор $ where вместе с операциями сокращения карты в MongoDB поддерживает несколько функций JavaScript, поэтому их нельзя использовать глобально.

Как использовать $ where в MongoDB

В этом руководстве используются следующие экземпляры MongoDB:

Database: Используемая здесь база данных называется » Linuxhint «.

Collection-name: Сбор, который рассматривается в этой статье, называется » оценки «.

А документы, содержащиеся в сборнике » оценок «, показаны ниже:

> db.staff.find().pretty()
C1, C2, C3, C4 предполагаются как идентификаторы курсов

Примечание: C1, C2, C3, C4 предполагаются как идентификаторы курсов в приведенных выше выходных данных.

Пример 1. Базовое использование оператора $ where

Прежде чем вдаваться в подробности, вы должны помнить, что два ключевых слова, » this » или » obj «, используются для ссылки на документы в функции JS или выражении JS.

Ссылаясь на документы в сборнике » оценок «:

Команда 1: приведенная ниже команда будет искать документы и отображать только те, которые имеют одинаковые значения в разных полях:

Как вы можете проверить, вывод содержит только » один » документ, в котором совпадают значения » C1 ″ и » C2 «.

> db.grades.find({$where: «this.C1==this.C2»}).pretty()

приведенная ниже команда будет искать документы и отображать

Команда 2: тот же результат (как и в команде 1 ) может быть получен путем выполнения указанной ниже команды в Mongo Shell. Здесь ключевое слово » obj » используется вместо » this «.

> db.grades.find({$where: «obj.C1»==«obj.C2»}).pretty()

тот же результат (как и в команде 1 ) может быть получен

Команда 3: вы также можете использовать оператор $ where, как мы сделали в приведенной ниже команде. В следующей команде функция () вернет документы, полученные путем применения ключевых слов » obj » и » this «, значения » C1 ″ и » C3 ″ совпадают.

> db.grades.find({$where: function(){return (this.C1==this.C3)}}).pretty()

вы также можете использовать оператор $ where

Команда 4: применение функции JS () с оператором $ where также может быть выполнено с помощью ключевого слова » obj » вместо » this «. Для этого вы можете выполнить следующую команду:

> db.grades.find({$where: function(){return obj.C1==obj.C3}}).pretty()

применение функции JS () с оператором $ where также может

Пример 2: $ where действует без его использования в команде

Если ваша команда выполняет только приложение оператора $ where, вы можете использовать команду без указания ключевого слова $ where в команде. Пример команды в подобной ситуации приведен ниже:

> db.grades.find(«this.C1==this.C2»).pretty()

Или ключевое слово » obj » также можно использовать вместо » this » в приведенной выше команде.

> db.grades.find(«obj.C1==obj.C2»).pretty()

Или ключевое слово obj также можно использовать вместо

Пример 3: Использование $ where со стандартными операторами MongoDB

Оператор $ where может использоваться с несколькими другими операторами MongoDB. Например, в приведенной ниже команде мы использовали оператор меньше (<) с оператором $ where. Приведенная ниже команда будет искать условия обоих операторов, а затем любой документ, удовлетворяющий либо «==», либо «||» Состояние будет отображаться в выводе.

> db.grades.find(«this.pos1==this.pos2||this.pos1 < this.pos2»).pretty()

При работе с оператором $ where, выполняющим поиск

При работе с оператором $ where, выполняющим поиск в большом количестве документов, может потребоваться много времени с оператором $ where, поскольку MongoDB выполняет оператор $ where после любого другого стандартного оператора, используемого в запросе.

Заключение

MongoDB часто обновлял свои версии в прошлом, и причина заключалась в том, чтобы улучшить производительность и эффективность любой команды, метода или оператора MongoDB. В MongoDB оператор $ where может использоваться для сопоставления полей с помощью выражения JS или функции JS. В этом подробном руководстве мы представили использование оператора $ where в MongoDB. После подробного исследования и сбора данных мы пришли к выводу, что следует отдавать предпочтение альтернативным вариантам оператора $ where, поскольку оператор $ where ищет всю коллекцию перед тем, как дать вам результат.

Читайте также:  Работа с датой и временем в Java
Оцените статью
bestprogrammer.ru
Добавить комментарий