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,....