Я исхожу из фона реляционной базы данных и все еще пытаюсь понять, как хранить данные, которые были бы реляционными в базе данных NoSQL (или объекте JSON).Лучший способ организовать данные JSON для MongoDB
Мой вопрос: как я могу хранить данные о деревнях? В каждой деревне есть пользователь, прикрепленный к нему, и каждая деревня имеет координату X и Y. Это объект, который может выглядеть так:
var map = [{
x: 1,
y: 1,
terrainType: land,
village: {
mayor: jragon,
population: 150,
gold: 100,
iron: 25,
garrason: {
archers: 4,
knights: 1
},
buildings: {
smith: {
level: 4,
upgradeFinish: false;
},
mill: {
level: 2,
upgradeFinish: 'some date/time...'
}
}
}
}];
Однако, как вы, вероятно, видите, это может немного потушить. Я предполагаю, что использование некоторых помощников мангуста может помочь при запросе данных.
Даже с этим объектом все еще существует некоторый аспект отношения. map.village.mayor ссылается на пользователя в другой коллекции.
Коллекция карт используется для рисования карты каждый раз. При рисовании карты она решает, какую плиту использовать на каком уровне деревня.
Извините, если я не прояснил себя!
В вашем дизайне нет ничего принципиально неправильного. Мэр, как правило, хранится как идентификатор документа в коллекции «люди», хотя, чтобы избежать необходимости для операций типа «join» и нескольких обращений к БД или специальных запросов, некоторая информация, необходимая для мэра, также может быть сохранена прямо в деревенском столе. –
Хорошо. Скажем, вы хотели найти все деревни, связанные с пользователем. Обычно вы присоединяетесь к дереву таблицы user_id. Но здесь вы бы искали объекты, где map.village.mayor = user_id? Лучше иметь 3 отдельные коллекции; пользователей, карт и деревень? Затем выполните команду psudo-join? – Jragon