组织MongoDB的JSON数据的最佳方法

时间:2014-12-13 15:53:37

标签: json mongodb express mean-stack relational

我来自关系数据库背景,我仍然试图了解如何在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指的是不同集合中的用户。

地图集合用于每次绘制地图。在绘制地图时,它决定使用什么样的瓷砖。

对不起,如果我没有说清楚的话!

1 个答案:

答案 0 :(得分:2)

要在MongoDB中拥有良好的架构设计,您应该非常关心您经常要做的请求。

要记住以下几点:

  • 关于MongoDB的限制,您的请求应该是正确的(没有事务,文档级原子性,没有真正的连接......)
  • 理想情况下,您的请求应该很容易编码。
  • 您应该能够以正确的方式使用索引。如果每个请求都可以使用索引来读取您所拥有的数据而不是更多,那么您已经做得很好。
  • 每个文档中的密钥名称都是重复的。你可以缩短名称,但我宁愿自动或不做。

如果你想学习,我建议你至少有一半的书" MongoDB应用设计模式"作者:Rick Copeland。您的问题和上下文可能过于宽泛,甚至无法适应stackoverflow。