ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.01.2024
Просмотров: 203
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
| 1 | > db.users.find ({age: {$gt : 30, $lt: 50}}) |
| 1 | > db.users.find ({age: {$eq : 22}}) |
| 1 | > db.users.find ({age: 22}) |
| 1 | > db.users.find ({age: {$ne : 22}}) |
| 1 | > db.users.find ({age: {$in : [22, 32]}}) |
| 1 | > db.users.find ({age: {$nin : [22, 32]}}) |
Логические операторы
Логические операторы выполняются над условиями выборки:-
$or: соединяет два условия, и документ должен соответствовать одному из этих условий -
$and: соединяет два условия, и документ должен соответствовать обоим условиям -
$not: документ должен НЕ соответствовать условию -
$nor: соединяет два условия, и документ должен НЕ соответстовать обоим условиям
Оператор $or
Оператор $or представляет логическую операцию ИЛИ и определяет набор пар ключ-значение, которые должны иметься в документе. И если документ имеет хоть одну такую пару ключ-значение, то он соответствует данному запросу и извлекается из бд:| 1 | > db.users.find ({$or : [{name: "Tom"}, {age: 22}]}) |
| 1 | > db.users.find ({name: "Tom", $or : [{age: 22}, {languages: "german"}]}) |
| 1 | > db.users.find ({$or : [{name: "Tom"}, {age: {$gte:30}}]}) |
В данном случае мы выбираем все документы, где name="Tom" или поле age имеет значение от 30 и выше.
Оператор $and
Оператор $and представляет логическую операцию И (логическое умножение) и определяет набор критериев, которым обязателньо должен соответствовать документ. В отличие от оператора $or документ должен соответствовать всем указанным критериям. Например:| 1 | > db.users.find ({$and : [{name: "Tom"}, {age: 32}]}) |
Поиск по массивам
Ряд операторов предназначены для работы с массивами:-
$all: определяет набор значений, которые должны иметься в массиве -
$size: определяет количество элементов, которые должны быть в массиве -
$elemMatch: определяет условие, которым должны соответствовать элемены в массиве
$all
Оператор $all определяет массив возможных выражений и требует, чтобы документы имели весь определяемый набор выражений. Соответственно он применяется для поиску по массиву. Например, в документах есть массив languages, хранящий иностранные языки, на которых говорит пользователь. И чтобы найти всех людей, говорящих одновременно и по-английски, и по-французски, мы можем использовать следующее выражение:| 1 | > db.users.find ({languages: {$all : ["english", "french"]}}) |
Оператор $elemMatch
Оператор $elemMatch позволяет выбрать документы, в которых массивы содержат элементы, попадающие под определенные условия. Например, пусть в базе данных будет коллекция, которая содержит оценки пользователей по определенным курсам. Добавим несколько документов:| 1 2 | > db.grades.insertMany([{student: "Tom", courses:[{name: "Java", grade: 5}, {name: "MongoDB", grade: 4}]}, {student: "Alice", courses:[{name: "C++", grade: 3}, {name: "MongoDB", grade: 5}]}]) |
| 1 | > db.grades.find({courses: {$elemMatch: {name: "MongoDB", grade: {$gt: 3}}}}) |
Оператор $size
Оператор $size используется для нахождения документов, в которых массивы имеют число элементов, равным значению $size. Например, извлечем все документы, в которых в массиве laguages два элемента:| 1 | > db.users.find ({languages: {$size:2}}) |
| 1 | {"name": "Tom", "age": 32, languages: ["english", "german"]} |
Оператор $exists
Оператор $exists позволяет извлечь только те документы, в которых определенный ключ присутствует или отсутствует. Например, вернем все документы, в который есть ключ company:| 1 | > db.users.find ({company: {$exists:true}}) |
Оператор $type
Оператор $type извлекает только те документы, в которых определенный ключ имеет значение определенного типа, например, строку или число:| 1 2 | > db.users.find ({age: {$type:"string"}}) > db.users.find ({age: {$type:"number"}}) |
Оператор $regex
Оператор $regex задает регулярное выражение, которому должно соответствовать значение поля. Например, пусть поле name обязательно имеет букву "b":| 1 | > db.users.find ({name: {$regex:"b"}}) |
-
Работа с данными в MongoDB Compass
Mongosh, в котором можно вводить почти все те же команды для работы с данными, что и в консольной оболочке mongo:Но также стоит отметить, что консольный клиент в Compass несколько упрощает написание запросов. Прежде всего, можно копировать и вставлять запросы в mongosh. Также mongosh имеет функцию автодополнения, которая позволяет нам предложить варианты доступых функций: