Что тренируем
Источник даёт практикум, а не новую лекцию: студент должен самостоятельно собрать данные, проверить фильтры и увидеть, как MongoDB работает с числами, булевыми значениями и отрицательными температурами.
Практикум 16 закрепляет создание коллекции и запросы MongoDB на небольшом наборе planets.
Коллекцию лучше назвать с личным суффиксом, чтобы не конфликтовать с работой других студентов.
Основные поля: name, orderFromSun, hasRings, surfaceTemperatureC.
Фильтры тренируют равенство, диапазоны $gte/$lte, булевы поля и комбинирование условий.
Сортировка по orderFromSun помогает быстро проверить порядок планет.
countDocuments() подходит для подсчёта документов по условию.
После базовых запросов документы дополняются mass10e24kg, а затем используются в сортировках и группировках.
Топ-3 ошибки: записать отрицательные температуры с посторонним символом, перепутать true/false со строками, забыть обновить все планеты перед агрегацией.
Источник даёт практикум, а не новую лекцию: студент должен самостоятельно собрать данные, проверить фильтры и увидеть, как MongoDB работает с числами, булевыми значениями и отрицательными температурами.
Каждая планета хранится как один документ. Поле orderFromSun удобно для сортировки, hasRings — для булевых фильтров, surfaceTemperatureC — для диапазонов.
{
name: "Mercury",
orderFromSun: 1,
hasRings: false,
surfaceTemperatureC: 67
}
В источнике сказано добавить имя для уникальности. В учебной базе несколько студентов могут работать рядом, поэтому planets_anna безопаснее, чем общая planets.
MongoDB не требует отдельного оператора BETWEEN: диапазон собирается объектом с $gte и $lte. Булево поле фильтруется значениями true/false без кавычек.
db.planets_name.find({
orderFromSun: { $gte: 1, $lte: 3 },
hasRings: false
})
После первичных запросов коллекция расширяется массой планет. Для разных значений по именам удобнее выполнить несколько updateOne или bulkWrite.
db.planets_name.updateOne(
{ name: "Earth" },
{ $set: { mass10e24kg: 5.97, type: "terrestrial" } }
)