MongoDB获取ObjectId Array的值

时间:2014-02-19 01:59:12

标签: mongodb database-design objectid database

我正在创建一个简单的应用程序,每次玩家杀死另一个玩家时都会跟踪。这意味着当他们杀死一名玩家时,被杀死的玩家将被添加到他们的userarray(包含他们已经杀死的所有玩家),然后可以将其用于统计等等。仅存储用户名的问题数组中的字符串值是占用更多空间,我需要更长时间才能获取其他数据。

我遇到的问题是我不确定如何存储玩家的杀戮。我需要能够抓取userarray密钥,获取每个username,然后显示它。

这会导致滞后,因为它必须获取该阵列中的每个用户吗?有没有办法让userarray得到查询已经解析过的所有值?

用户集合的结构(以及ipdate等);

enter image description here

第二个集合的结构;

enter image description here

enter image description here

我正试图以这样的数据结束;

enter image description here

1 个答案:

答案 0 :(得分:1)

虽然这可能比提供的屏幕截图有更多的解释,但您似乎正在努力解决MongoDB中的模式设计的核心概念,我们可以在答案中解决这个问题。

正如您所指出的,文档中包含userarray字段,其中包含ObjectId引用列表。据推测,这些文件指的是要么位于集合中的其他位置,要么位于其他集合中的文档。

这个问题的一个大问题是,“MongoDB不做连接”,并且由于您希望从引用的文档中获取“属性”,因此不会发生这种情况。当然没有任何简单的方法。

所以可能想要的是embedded documents,其中您要引用的所有数据实际上都包含在您正在检索的父文档中。但是根据您的使用需求,您可能还需要其他东西。为此,建议您花一些时间阅读MongoDB文档中的Data Modelling部分。这将讨论各种方法,并将帮助您获得理解。

在你真的认为所有的读数引用真的是你想要的东西,那么它会被告知到活动结束后go to google,以搜索出您的语言库,会给你一些帮助有这个。

无论如何,一般性讨论过于宽泛。最好做阅读,尝试一下,然后询问有关具体问题的问题。