如何在 MongoDB 中存储西洋双陆棋棋盘?

How can I store a backgammon board in MongoDB?

我是 NoSQL 数据库的新手,虽然我找了很多,但我找不到这类事情的最佳实践。

对于那些不知道的人来说,西洋双陆棋是一种棋盘上有 24 个点(或插槽)和一个可以包含任何颜色棋子的横条的游戏(被击中的棋子被放置在栏上)。另外,每个点(或插槽)可以包含一个或多个相同颜色的棋子。

我正在寻找的结构应该被优化以帮助我快速计算两件事:

我想到的结构是这样的:

{
    1: {
        color: 'black',
        pieces: 2
    },
    2: {
        color: 'white',
        pieces: 1
    },
    3: {}
    // etc, until 24
    24: {}
    bar: {
        {
            color: 'white',
            pieces: 1
        }
    }
}

正如您所看到的,这种方法的唯一问题是 bar。由于条形可以包含任何颜色的块,我必须在 bar 键内创建另一个对象,以便稍后可以根据需要添加颜色为 black 的块。

有没有更好的结构?另外,我希望获得有关 well/awful 此结构如何执行的提示和技巧。

考虑到您只有 1 个 document 且大小相对恒定,您可以放心地假设这 1 个 document 将保留在内存中,因此您不必太担心更多关于性能问题,因此它只是一个文档 - 它基本上是在询问我的 HashMap 性能如何...

如果由我决定,我会将条形分成 2 个条形 - bBarwBar(顺便说一句,在现实生活中,每个玩家旁边都有自己的条形图保留他自己的"eaten"件。

顺便说一下,任何涉及最佳着法的计算都应该在内存中进行。您不应将中间计算结果存储在 DB