couchdb在一个文档中包含多个链接文档

时间:2017-01-06 07:04:59

标签: javascript couchdb pouchdb

作为NoSQL概念的完全新手,它让我很难搞清楚如何实现类似于多个链接文档的连接。 我在CouchDB中获得了一个国会的数据结构,它被复制到客户端上的PouchDB,如:

会话:

"_id": "1",
"type": "session",
"Title": "Title of Session",
}

人:

"_id": "2",
"type": "Person",
"mail": "mail@mail.com",
"Names": {
    "FirstName": "Horst",
    "LastName": "Muller"
}

"_id": "3",
"type": "Person",
"mail": "mail2@mail.com",
"Names": {
    "FirstName": "Mark",
    "LastName": "Webber"
}

会谈:

"_id": "4",
"type": "presentation",
"Sessions": [
    "1"
],
"PresentationTitle": "Title of Talk",
"files": [
    {
    "Filename": "presentationfile.pptx",
    }
],
"Speakers": [
    "2",
    "3"
]

我试图实现的是一个输出,其中检索文档就好像将链接文档的文档放在结果中一样

"_id": "4",
"type": "presentation",
"Sessions": [
    "Title of Session"
],
"PresentationTitle": "Title of Talk",
"files": [
    {
    "Filename": "presentationfile.pptx",
    }
],
"Speakers": [
    {
    "FirstName": "Mark",
    "LastName": "Webber"
    },
    {
    "FirstName": "Horst",
    "LastName": "Muller"
    }
]

或类似的东西,没有非规范化数据。我尝试使用map / reduce,Mango和pouchdb-find,但没有运气。 这在NoSQL-World中是否可能?

1 个答案:

答案 0 :(得分:0)

CouchDB中实际上有一个名为Linked Documents的非常简洁的功能,可以让你有效地进行连接。

要点是,如果您使用_id属性作为值发出对象,则include_docs=true的行为将获取链接文档而不是源文档。 (我上面链接的文档有一个详细的例子)