Верно ли смоделированы данные (MongoDB)?

Изучаю mongoDB, мне посоветовали создать базу данных, которая показывает прогноз погоды для 5 городов. База должна обновляться 2 раза в день. Я никак не могу привыкнуть к этой парадигме и абсолютно уверен что та структура, которую я составил вовсе не оптимальна. Прошу совета у опытных программистов, как лучше исправить структура чтобы структура БД была более оптимальна или может быть всё нормально? Заранее спасибо.
// Получается какое - то перемешивание
{
	_id : ObjectID(),
	city: rubtsovsk,
	date: 27.07.2014,
	time: 18:30,
	forecast : {
		current_temp_c : 19,
		current_temp_f : 60,
		cloud_title  : "пасмурно",
		precip_title : "без осадков"
	}
}
  • Вопрос задан
  • 2423 просмотра
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
Во-первых, вы должны определить самый часто возникающий вопрос. Скорее всего, он таков - найти город по его номеру (_id) или по названию (city), и вывести последнюю зарегистрированную инфу, причём не важно, когда именно была эта инфа (то есть время и дата не будут участвовать в условии запроса). А иногда нужно для города вывести всю доступную инфу (например, в виде графика), и тогда нужна уже вся коллекция данных, в том числе и инфа о дате и времени.
Тогда вам нужна такая схема: в документе храните последнюю запись о погоде. А для истории завести внутреннюю коллекцию, в которую постепенно заносить устаревающие данные.
{
	_id : ObjectID(),
	city: rubtsovsk,
	forecast : {
		date: 27.07.2014,
		time: 18:30,
		current_temp_c : 19,
		current_temp_f : 60,
		cloud_title  : "пасмурно",
		precip_title : "без осадков"
	},
	forecasts : [
		{
			date: 27.07.2014,
			time: 6:30,
			current_temp_c : 19,
			current_temp_f : 60,
			cloud_title  : "пасмурно",
			precip_title : "без осадков"
		},
		{
			date: 26.07.2014,
			time: 18:30,
			current_temp_c : 19,
			current_temp_f : 60,
			cloud_title  : "пасмурно",
			precip_title : "без осадков"
		}
	]
}

Плюс, я бы всё-таки заменил строковые данные "пасмурно","без осадков" на их коды, а конкретные строки вставлял в программе. Хотя бы чтобы учесть возможность последующей локализации.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы