Reference 基于文档的数据库和CouchDB尤其是如何处理ID引用?

Reference 基于文档的数据库和CouchDB尤其是如何处理ID引用?,reference,couchdb,document-based,Reference,Couchdb,Document Based,我非常喜欢基于文档的方法,将博客文章等数据存储为一个完整的文档,并将所有需要的信息保存在其中。因此,作者的用户名存储为纯文本。作者本人有自己的文件,附有个人信息。当作者决定更改用户名时会发生什么?我是否必须更新每个包含作者博客文章的文档,或者这只是使用基于文档的数据库的缺点之一 谢谢你的建议 如果您需要编写包含博客文章内容和作者姓名的查询(视图),那么博客内容中必须包含作者姓名,因此必须更新所有博客文章。 如果名称仅用于提供信息(我的意思是您不查询博客文章内容,如关键字和作者姓名),则可以将id

我非常喜欢基于文档的方法,将博客文章等数据存储为一个完整的文档,并将所有需要的信息保存在其中。因此,作者的用户名存储为纯文本。作者本人有自己的文件,附有个人信息。当作者决定更改用户名时会发生什么?我是否必须更新每个包含作者博客文章的文档,或者这只是使用基于文档的数据库的缺点之一


谢谢你的建议

如果您需要编写包含博客文章内容和作者姓名的查询(视图),那么博客内容中必须包含作者姓名,因此必须更新所有博客文章。

如果名称仅用于提供信息(我的意思是您不查询博客文章内容,如关键字和作者姓名),则可以将id添加到博客文档中(当然现在可以查询博客内容和作者id),并将{u id':doc.author\u id}作为值发出。
include_docs=true
然后提供作者的文档(不再是blogpost文档..您必须使用结果行中的id显式调用它)无需更新博客帖子。

例如: 案例1: 按姓名使用作者,您必须包括姓名,因此更新所有文档

{
 "_id":"blogpost1",
 "author":"Oliver",
 "keyword":"couchDB"
}
要查找oliver的所有couchdb帖子:

emit ([doc.author,doc.keyword],1) 
电话:

案例2: 不需要按名称查询

    {
     "_id":"blogpost1",
     "author_id":"author-123",
     "keyword":"couchDB"
    }

   emit (doc.keyword,{'_id':doc.author_id})
作者博士:

{
"_id":"author-123",
"name":"Oliver"
}
电话:

结果:

...
{"id":"blogpost1","key":"couchDB","value":{"_id":"author-123"},"doc":{"_id":"author-123","_rev":"xxx","name":"Oliver,....

谢谢奥库罗,谢谢你的回复。我在理论上考虑过这一点,但不知道这将如何运作。然后我在家里试了试,结果不起作用。我跟随你的每一步。但是当我调用我的视图时,它不会将作者的文档附加到输出中,而是将博客的文档附加到输出中。。请随意查看示例数据库“includedocs”,感谢irishoch.com提供免费托管。再次感谢okurow!你是对的。我也刚刚在官方维基上读到了。
?key=["couchDB"]&include_docs=true
...
{"id":"blogpost1","key":"couchDB","value":{"_id":"author-123"},"doc":{"_id":"author-123","_rev":"xxx","name":"Oliver,....