Писать Project в Filter
Симптом: вместо выбора полей Compass пытается найти документы с полями age и native_country, равными 1.
Исправление: фильтры вводите в Filter, а выбор полей — в Project.
Занятие 54 переводит вводные понятия MongoDB в первые реальные запросы к коллекции ich.US_Adult_Income.
Простой фильтр в Compass записывается как документ: { age: 27 }. Несколько полей в одном фильтре работают как логическое AND.
Вкладка или поле Project управляет тем, какие поля показать: { age: 1, native_country: 1 }.
Поле _id выводится по умолчанию, поэтому его исключают явно: { _id: 0, age: 1, native_country: 1 }.
Sort принимает 1 для возрастания и -1 для убывания, например { age: -1 }.
Для условий используются операторы $lt, $lte, $gt, $gte, $ne, $in, $nin и $or.
Топ-3 ошибки: писать Project в Filter, забывать пробелы в строковых значениях источника, путать $in и $nin.
Симптом: вместо выбора полей Compass пытается найти документы с полями age и native_country, равными 1.
Исправление: фильтры вводите в Filter, а выбор полей — в Project.
Симптом: { native_country: "Mexico" } ничего не находит, хотя пример с Мехико есть в уроке.
Исправление: используйте значение как в данных: " Mexico", если в коллекции строка хранится с пробелом.
1 в Project и SortСимптом: студент думает, что { age: 1 } всегда означает «показать возраст».
Исправление: смысл зависит от поля Compass. В Project это включение поля, в Sort — сортировка по возрастанию.
_idСимптом: в результате виден _id, хотя просили только age и native_country.
Исправление: добавьте _id: 0 в Project.
$in вместо $ninСимптом: запрос возвращает тех, кто работает 45, 50 или 80 часов, хотя нужно было исключить эти значения.
Исправление: для отрицания списка используйте $nin.
$or как обычное полеСимптом: структура запроса не читается Compass или не даёт ожидаемый результат.
Исправление: $or должен получать массив документов: { $or: [ { ... }, { ... } ] }.
Симптом: { age: "27" } не совпадает с числовым полем age.
Исправление: числа пишите без кавычек, строки — в кавычках.