【发布时间】:2014-12-13 15:53:37
【问题描述】:
我来自关系数据库背景,但我仍在努力思考如何在 NoSQL 数据库(或 JSON 对象)中存储关系数据。
我的问题是,我将如何存储有关村庄的数据?每个村庄都有一个用户,每个村庄都有一个 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 指的是不同集合中的用户。
地图集合用于每次绘制地图。绘制地图时,它会根据村庄的等级决定使用什么图块。
对不起,如果我没有说清楚!
【问题讨论】:
-
您的设计根本没有问题。市长通常会作为文档的 ID 存储在“人”集合中,但为了避免“加入”类操作和多个数据库访问或特殊查询的必要性,也可能会存储有关市长的一些必要信息直接在村里的桌子上。
-
好的。假设您想查找与某个用户相关联的所有村庄。通常你会加入 user_id 上的村庄表。但是在这里你会搜索 map.village.mayor = user_id 的对象吗?最好有3个单独的集合;用户、地图和村庄?然后执行 psudo-join 命令?
标签: json mongodb express mean-stack relational