Введение
В этой главе мы познакомимся с операторами сопоставления полей массива в JSON-документах MongoDB.
Операторы запросов к массивам, поддерживаемые MongoDB
| Оператор | Описание |
|---|---|
| $all | Сопоставляет всё значение массива в условии запроса |
| $elemMatch | Для полей массива, если любое значение соответствует всем условиям, установленным с помощью $elemMatch, условие считается выполненным |
| $size | Сопоставляет размер массива |
$all
{ tags: { $all: [ "ssl" , "security" ] } }
Эквивалентно
{ $and: [ { tags: "ssl" }, { tags: "security" } ] }
Поле tags является массивом значений, и массив tags одновременно содержит значения ssl и security.
$elemMatch
Тестовые данные
Данные коллекции scores выглядят следующим образом:
{ _id: 1, results: [ 82, 85, 88 ] }
{ _id: 2, results: [ 75, 88, 89 ] }
Пример:
db.scores.find(
{ results: { $elemMatch: { $gte: 80, $lt: 85 } } }
)
Возвращаемые данные:
{ "_id" : 1, "results" : [ 82, 85, 88 ] }
Пояснение:
- Если любое значение в массиве
resultsбольше или равно 80 и меньше 85, документ успешно сопоставляется.
$size
Сопоставляет размер массива
db.collection.find( { field: { $size: 2 } } );
Пояснение:
- Поле
fieldявляется массивом значений, и если размер массива равен 2, документ успешно сопоставляется.