Значения массивы в MongoDB

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

javascript[
  {
    "name": "user1",
    "langs": ["english", "spanish"],
  },
  {
    "name": "user2",
    "langs": ["english", "german"],
  },
  {
    "name": "user3",
    "langs": ["german", "spanish"],
  },
  {
    "name": "user4",
    "langs": ["spanish", "english"],
  },
  {
    "name": "user5",
    "langs": ["german", "english", "spanish"],
  },
]

Пример

Давайте найдем все документы, у которых в массиве с языками есть 'english':

javascriptlet cond = {langs: 'english'};
let res  = await coll.find(cond).toArray();
console.log(res);

Пример

Найдем теперь все документы, у которых в массиве с языками есть одновременно два языка, 'english' и 'german':

javascriptlet cond = {langs: ['english', 'german']};
let res  = await coll.find(cond).toArray();
console.log(res);

Пример

Теперь выведем все документы, в которых 'english' находится на первом месте в массиве:

javascriptlet cond = {'languages.0': "english"};
let res  = await coll.find(cond).toArray();
console.log(res);

Практические задачи

Задание 1

Из приведенной коллекции получите всех юзеров, которые знают испанский.

Задание 2

Из приведенной коллекции получите всех юзеров, которые знают немецкий и испанский.

Задание 3

Из приведенной коллекции получите всех юзеров, у которых испанский является вторым элементом в массиве.