创建视图以在CouchDb中获取多个文档
这里是CouchDb新手 我在CouchDb中有几个具有相同结构的文档:创建视图以在CouchDb中获取多个文档,couchdb,nosql,Couchdb,Nosql,这里是CouchDb新手 我在CouchDb中有几个具有相同结构的文档: { "_id": "1170140286", "_rev": "1-79ffad4d4cbe24effc72f9ec519373ca", "data": [ { "photo": "link_of_photo1", "userid": "34623", "username": "guest-user1"
{
"_id": "1170140286",
"_rev": "1-79ffad4d4cbe24effc72f9ec519373ca",
"data": [
{
"photo": "link_of_photo1",
"userid": "34623",
"username": "guest-user1"
},
{
"photo": "link_of_photo2",
"userid": "34623",
"username": "guest-user1"
},
{
"photo": "link_of_photo3",
"userid": "34623",
"username": "guest-user1"
}
]
}
及
我不知道我想做的是否可行,但我正在尝试创建一个视图,将这些文档的数据元素合并到一个文档中:
[
{
"photo": "link_of_photo1",
"userid": "34623",
"username": "guest-user1"
},
{
"photo": "link_of_photo2",
"userid": "34623",
"username": "guest-user1"
},
{
"photo": "link_of_photo3",
"userid": "34623",
"username": "guest-user1"
},
{
"photo": "link_of_photo1",
"userid": "6334",
"username": "guest-user2"
},
{
"photo": "link_of_photo2",
"userid": "6334",
"username": "guest-user2"
},
{
"photo": "link_of_photo3",
"userid": "6334",
"username": "guest-user2"
}
]
我很确定我没有正确理解couchdb的逻辑,所以任何帮助都是非常特殊的。请参考这些链接 示例代码:
function(doc){
if(doc.items)
doc.items.forEach(function(item){
emit(doc._id,{_id:item});
})
}
我希望这些将解决您的问题。您可以获得包含所有链接的查看结果。它将是一个数组,但看起来与模拟结果结构有点不同。视图逻辑可以如下所示(示例中未使用行的键-可能用户名或id是一个有用的输入值): 为了完整起见,应该提到,有一种方法可以在服务器端“合并所有文档”。在数据最终发送回请求者之前,可以通过CouchDB列表操纵视图结果。但是,这是不推荐的!请认真对待这一点,不要尝试这一点——这是一个巨大的性能问题,CouchDB的目标从来都不是提供这样的用例
function(doc){
if(doc.items)
doc.items.forEach(function(item){
emit(doc._id,{_id:item});
})
function (doc) {
var data = doc.data
if (!data) return
for (var i = 0, link; link = data[i++];)
emit(null, link)
}