【发布时间】:2016-03-10 09:34:03
【问题描述】:
我有一个由“记事本”组成的流星应用程序,每个都包含一个“笔记”数组,可以插入到任何位置、删除或编辑行。该数组包含在具有各种其他信息(例如名称、用户等)的对象中。我的主文档中的每个对象都将包含这些数组之一。例如:
{
"_id": "1234",
"name": "NotePad123",
"notes": [ {note: "this is my first test note"},
{note: "this is my second test note"},
{note: "this is my third test note"} ]
},{
"_id": "4321",
"name": "NotePad321",
"notes": [ {note: "noteA"},
{note: "noteB"},
{note: "noteC"} ]
}
有什么方法可以将“注释”作为自己的集合传递给我的客户,以便客户可以直接编辑它,就好像它没有嵌入一样?如果每次我想更新它时都需要将完整的笔记数组传递给服务器,我担心性能会受到影响,因为可能有很多更新它可能会变得非常大。
我意识到我可以创建一个新文档并引用它,as described here,但是这对于许多“记事本”来说可能会变得非常忙碌,因为排序很重要,而且我将有很多行与我的每个主要对象相关联。
【问题讨论】:
-
这是定义数据库模式时必须选择是否非规范化的地方:如果您希望有很多笔记项目,但记事本总是有相同的笔记,或者至少它们没有变化通常,将笔记放在自己的收藏夹中可能是明智之举。
-
查看这个:blog.mongodb.org/post/87200945828/… 了解更多关于非规范化的信息
-
我希望每个记事本都有一组独特的笔记,但一组笔记可能在 100 到 1000 的数量级。我还担心对笔记集的快速更新。我感觉我只需要将一组笔记作为它自己的集合,并引用记事本(就像我在 SQL DB 中所做的那样)。
-
由于乐观的 UI,您可能不需要过多担心实际的数据库性能。
标签: meteor