在CouchDB / JSON中存储有序子文档/值?

时间:2009-12-10 23:48:31

标签: json couchdb html-lists

在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; }

每种产品的优点/缺点是什么?随着应用程序的增长,您会发现哪些更容易使用?

2 个答案:

答案 0 :(得分:1)

每篇文章使用一个文档,假设它包含非平凡的数据。一个大的“容器”文档不是一个好主意 - 你会浪费很多修改任何文章数据的每一个小更新。它也使冲突解决成为一个麻烦。

答案 1 :(得分:1)

第一个解决方案。

优势:您不能在一个职位上有两篇文章。

缺点:要按顺序获取文章,您需要从数据库获取所有文章,然后只过滤您需要的文章,或者您需要调用与要显示的文章一样多的查询页面。

第二个解决方案

优势:您可以在一个查询中获取一个页面的所有文档。只需创建视图,其中键由页面位置组成,并使用 startKey endkey 参数来仅获取文章需要。

缺点:可能会出错,并且会有更多具有相同位置的文章。

我会选择第二种解决方案。