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: <JS—string|JS—function>}
Замечено, что оператор $ where не может быть выполнен с несколькими стандартными функциями MongoDB, такими как db. Оператор $ where вместе с операциями сокращения карты в MongoDB поддерживает несколько функций JavaScript, поэтому их нельзя использовать глобально.
Как использовать $ where в MongoDB
В этом руководстве используются следующие экземпляры MongoDB:
Database: Используемая здесь база данных называется » Linuxhint «.
Collection-name: Сбор, который рассматривается в этой статье, называется » оценки «.
А документы, содержащиеся в сборнике » оценок «, показаны ниже:
> db.staff.find().pretty()

Примечание: 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()
Команда 3: вы также можете использовать оператор $ where, как мы сделали в приведенной ниже команде. В следующей команде функция () вернет документы, полученные путем применения ключевых слов » obj » и » this «, значения » C1 ″ и » C3 ″ совпадают.
> db.grades.find({$where: function(){return (this.C1==this.C3)}}).pretty()
Команда 4: применение функции JS () с оператором $ where также может быть выполнено с помощью ключевого слова » obj » вместо » this «. Для этого вы можете выполнить следующую команду:
> db.grades.find({$where: function(){return obj.C1==obj.C3}}).pretty()
Пример 2: $ where действует без его использования в команде
Если ваша команда выполняет только приложение оператора $ where, вы можете использовать команду без указания ключевого слова $ where в команде. Пример команды в подобной ситуации приведен ниже:
> db.grades.find(«this.C1==this.C2»).pretty()
Или ключевое слово » obj » также можно использовать вместо » this » в приведенной выше команде.
> db.grades.find(«obj.C1==obj.C2»).pretty()
Пример 3: Использование $ where со стандартными операторами MongoDB
Оператор $ where может использоваться с несколькими другими операторами MongoDB. Например, в приведенной ниже команде мы использовали оператор меньше (<) с оператором $ where. Приведенная ниже команда будет искать условия обоих операторов, а затем любой документ, удовлетворяющий либо «==», либо «||» Состояние будет отображаться в выводе.
> db.grades.find(«this.pos1==this.pos2||this.pos1 < this.pos2»).pretty()
При работе с оператором $ where, выполняющим поиск в большом количестве документов, может потребоваться много времени с оператором $ where, поскольку MongoDB выполняет оператор $ where после любого другого стандартного оператора, используемого в запросе.
Заключение
MongoDB часто обновлял свои версии в прошлом, и причина заключалась в том, чтобы улучшить производительность и эффективность любой команды, метода или оператора MongoDB. В MongoDB оператор $ where может использоваться для сопоставления полей с помощью выражения JS или функции JS. В этом подробном руководстве мы представили использование оператора $ where в MongoDB. После подробного исследования и сбора данных мы пришли к выводу, что следует отдавать предпочтение альтернативным вариантам оператора $ where, поскольку оператор $ where ищет всю коллекцию перед тем, как дать вам результат.