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

在CouchDB/JSON中存储有序的子文档/值?,json,couchdb,html-lists,Json,Couchdb,Html Lists,在CouchDB中存储已订购文档的最佳方式是什么 假设我有100篇文章,我想通过将它们以我喜欢的顺序明显地排列来进行排序,或者我有10000张图像,我希望它们以日期/类别/等以外的特定顺序出现。这最好存储在父级(“页面”或“相册”级)还是子级(图像/文章)级 如果是这样的话: 或者这个: 。。。其中条款:[我的第14条、第5条、第2条、第20条……]是实际文章文档的\u id 每种方法的优点/缺点是什么?随着应用程序的发展,您发现哪种方法更易于使用?假设每篇文章包含非琐碎数据,请使用一个文档

在CouchDB中存储已订购文档的最佳方式是什么

假设我有100篇文章,我想通过将它们以我喜欢的顺序明显地排列来进行排序,或者我有10000张图像,我希望它们以日期/类别/等以外的特定顺序出现。这最好存储在父级(“页面”或“相册”级)还是子级(图像/文章)级

如果是这样的话:

或者这个:

。。。其中
条款:[我的第14条、第5条、第2条、第20条……]
是实际文章文档的
\u id


每种方法的优点/缺点是什么?随着应用程序的发展,您发现哪种方法更易于使用?

假设每篇文章包含非琐碎数据,请使用一个文档。一个大的“容器”文档并不是一个好主意——任何文章数据的每次小更新都会浪费大量的修改。这也会给解决冲突带来麻烦。

第一个解决方案。

优点:一个职位不能有两篇文章

缺点:要按顺序获取文章,您需要从数据库获取所有文章,然后只过滤您需要的文章,或者需要调用页面上显示的文章的数量

第二种解决方案

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

缺点:可能会犯错误,并且在同一位置有更多的文章

我会选择第二种解决方案


{
    _id: myPage;
    articles: [myArticle14, myArticle5, myArticle2, myArticle20...];
}

{
    _id: myArticle14;
    position: 1;
}