我正在构建一个用户对象有多个游戏对象的应用程序。从mongoDB数据库中获取所有用户游戏的正确策略是什么?
据我所知,我有两个选择:
e.g。 示例用户</ p>
{
_id: '1342',
name: 'Dave',
games: [
'12345678',
'fgnhe45rnd',
],
}
示例游戏
{
_id: '12345678',
name: 'Fluxx',
}
e.g。 示例用户</ p>
{
_id: '1342',
name: 'Dave',
}
示例游戏
{
_id: '12345678',
name: 'Fluxx',
users: [
'1342',
'5783',
],
}
任何建议表示赞赏。 谢谢。
答案 0 :(得分:0)
如果你需要用户的游戏,你应该使用1.例如我需要kevin的游戏:你可以用2来获得kevin的游戏。?
答案 1 :(得分:0)
我建议您使用第一个选项。
示例用户</ p>
{
_id: '1342',
name: 'Dave',
games: [
'12345678',
'fgnhe45rnd',
],
}
游戏示例
{
_id: '12345678',
name: 'Fluxx',
}
正如您在用例中所提到的,您正在获取所有用户的游戏。
因此,如果您要获取Dave的所有游戏,您只需要获得Dave的游戏列表,然后将每个游戏引用到其数据中。这是 1 + n fetch ,其中 n是游戏Dave的数量。
如果您使用第二个选项,则需要浏览每个游戏以检查游戏中的用户列表是否包含Dave。然后,只有Dave在列表中时才必须记录数据。这是 N fetch ,其中 N是数据库中的游戏总数。
通常,N大于n + 1.