Введение

В этой главе мы познакомимся с операторами сопоставления полей массива в 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, документ успешно сопоставляется.