在CouchDB中存储有序文档的最佳方法是什么?
假设我有100篇文章,我想通过将它们按照我喜欢的顺序放置它们来订购它们,或者我有10,000张图像,我希望它们以除日期/类别/等之外的特定顺序出现。这最好存储在父级(“页面”或“专辑”级别)或子级(图像/文章)级别吗?
应该更像这样:
{
_id: myPage;
articles: [myArticle14, myArticle5, myArticle2, myArticle20...];
}
或这个:
{
_id: myPage;
articles: [myArticle14, myArticle5, myArticle2, myArticle20...];
}
...其中
是实际文章文档的{
_id: myArticle14;
position: 1;
}
{
_id: myArticle14;
position: 1;
}
。
每种产品的优点/缺点是什么?随着应用程序的增长,您会发现哪些更容易使用?
答案 0 :(得分:1)
每篇文章使用一个文档,假设它包含非平凡的数据。一个大的“容器”文档不是一个好主意 - 你会浪费很多修改任何文章数据的每一个小更新。它也使冲突解决成为一个麻烦。
答案 1 :(得分:1)
第一个解决方案。
优势:您不能在一个职位上有两篇文章。
缺点:要按顺序获取文章,您需要从数据库获取所有文章,然后只过滤您需要的文章,或者您需要调用与要显示的文章一样多的查询页面。
第二个解决方案
优势:您可以在一个查询中获取一个页面的所有文档。只需创建视图,其中键由页面和位置组成,并使用 startKey 和 endkey 参数来仅获取文章需要。
缺点:可能会出错,并且会有更多具有相同位置的文章。
我会选择第二种解决方案。