我有一堆"会议"文件和一堆用户"文档。一个 用户可能有多个电子邮件,会议可能在多个之间 通过电子邮件识别的人。
我需要通过会议ID和用户ID会议来查找用户 电子邮件。
我的文件现在看起来像这样:
{
"type": "meeting"
"_id": "MEETINGID",
"emails": ["test1@example.com", "test2@example.com"]
// Lots of others things
}
{
"type": "user",
"_id": "USERID",
"emails": ["a@example.com", "test1@example.com"]
// Lots of others things
}
我需要通过电子邮件将它们联系起来。
但如果有帮助,我当然可以将它们分开:
{
"type": "user",
"_id": "USERID",
// Lots of others things
}
{
"type": "user-email",
"_id": "USERID",
"email": "a@example.com"
}
{
"type": "user-email",
"_id": "USERID",
"email": "test1@example.com"
}
我需要能产生类似内容的视图:
{
"key": "MEETING",
"document": {"_id": "USERID"}
}
{
"key": "USERID",
"document": {"_id": "MEETINGID"}
}
这是可能的吗?我有一种可怕的感觉,我会去 加载查询来执行此操作:(
答案 0 :(得分:0)
你可以写一个像
这样的地图"meetingByEmail":
function (doc) {
if(doc.type=="meeting") {
for (var curEmail in doc.emails) {
emit (doc.emails[curEmail],null);
}
}
}
致电:
_view/byEmail?key="test1@example.com":
结果:
{"total_rows":4,"offset":0,"rows":[
{"id":"f2338c8e69d1da02c94a2104b6000e77","key":"test1@example.com","value":null},
{"id":"f2338c8e69d1da02c94a2104b6000e88","key":"test1@example.com","value":null}
]}
(f2338c8e69d1da02c94a2104b6000e77是来自会议的ID,用户test1已加入两次会议)
反之亦然(对于用户而言)
function(doc) {
if(doc.type=="user") {
for (var curEmail in doc.emails) {
emit (doc.emails[curEmail],null);
}
}
}
电话
user/_view/byEmail?key="test1@example.com"
结果:
{"total_rows":2,"offset":1,"rows":[
{"id":"user1","key":"test1@example.com","value":null}
]}
答案 1 :(得分:0)
简单的回答是“你不能”。 CouchDB不允许这样的东西。