制作具有多个字段的Mongo电影数据库

时间:2018-09-30 06:39:08

标签: node.js mongodb mongoose

这里的新手-我正在建立一个具有许多字段(即列)的非规范化电影数据库,例如标题,日期,类型,每部电影的预算...我想添加更多字段-可能多达70多个...!由于速度快,我目前正在考虑使用Mongodb-但是,我知道mongodb是非关系型的---这是我的问题:

  1. 这是否意味着我将拥有一个巨型集合(我知道有一个import org.testng.annotations.DataProvider; import org.testng.annotations.*; public class JUNKdP { @DataProvider( name = "junkDP") public static Object[][] junkDP() { Object [] [] dataSet = new Object[][] { new Object[] {1, 2}, new Object[] {3, 4}, new Object[] {5, 6}}; return dataSet; } } public class JUNK { private int totalAmount = 0; @BeforeClass public void beforeClass(){System.out.println("BeforeClass\n");} @BeforeMethod public void beforeMethod(){ System.out.println("BeforeMethod\n"); } @AfterMethod public void afterMethod(){ System.out.println("AfterMethod\n"); } @AfterTest public void afterTest(){ System.out.println("AfterTest\n"); this.totalAmount = 0; System.out.println("Reset total amount to 0"); } @AfterClass public void afterClass(){System.out.println("AfterClass\n");} @Test(dataProvider = "junkDP", dataProviderClass = JUNKdP.class, enabled = true) public void test(int a, int b){ System.out.println("Test method"); int sum = a + b; System.out.println("Sum: " + sum); this.totalAmount = this.totalAmount + sum; System.out.println("totalAmount: " + this.totalAmount + "\n"); } } mongodb函数-但我不知道为什么有人会使用它-因为从本质上讲,您不会在那个时候做一个SQL数据库(而不是Mongo)?

  2. 我在Mongo数据库中可以有多少个字段限制?

  3. 在此处打开书-如果您对哪种类型的数据库/我应该如何设置它还有其他建议,请告诉我。请注意,我正在使用node.js。

1 个答案:

答案 0 :(得分:0)

关于#1:是的,要走的路是一大收藏。除非绝对没有其他方法,否则请不要使用lookup,因为整个聚合框架只是处理不良数据库设计的缓慢手段。对于MongoDB,不要问自己存储的方式,问自己如何查询的东西。要从根本上制作电影的列表和详细视图,最好使用一个集合(在常见搜索字段上使用索引,也许是全文本索引,在概述列表中使用少量投影字段)。

关于#2:数量没有限制,但文档大小没有限制:单个文档限制为16 MB。只要我们在谈论文字,通常对于所有实际目的来说就足够了。

#3的更多想法: 如果您对演员有类似的引用:将显示电影信息时所需的“演员”对象的子集放到电影对象中,这样就只需要查询单个电影的整个详细视图。如果用户单击该演员,您仍然可以打开详细视图,并在演员集合上使用单独的查询来显示演员的详细信息。