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

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

[ { "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':

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

Пример

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

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

Пример

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

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

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

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

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

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