couchdb中的大数组管理

couchdb中的大数组管理,couchdb,Couchdb,我使用CouchDB来存储已爬网的网站。例如: { "_id": "doc-http:80-example.com/2012/09/", "_rev": "2-532ce885cdb56261cb6d21903cd74c56", "contentType": "text/html; charset=UTF-8", "lastModified": "2013-11-22T17:41:33.471Z", "schema": "document", "hostnam

我使用CouchDB来存储已爬网的网站。例如:

{
   "_id": "doc-http:80-example.com/2012/09/",
   "_rev": "2-532ce885cdb56261cb6d21903cd74c56",
   "contentType": "text/html; charset=UTF-8",
   "lastModified": "2013-11-22T17:41:33.471Z",
   "schema": "document",
   "hostname": "example.com",
   "uri": "/2012/09/",
   "port": 80,
   "protocol": "http:",
   "source": [
       "http://example.com/page/1",
       "http://example.com/page/2",
   ],
   "_attachments": {
       "content": {
       }
   }
}
source
”元素是一个数组,用于存储链接到该特定页面的所有页面。数组可以快速增长,我不想每次只添加一个链接时就获取并放置整个文档


是否可以在不重新发送整个“
source
”的情况下更新文档并插入另一个指向源代码的链接

您是否检查了
更新处理程序


我自己没有做过,但我已经读到你应该能够使用它来修补文档。

你检查过
更新处理程序吗


我自己没有这样做,但我已经了解到,您应该能够使用它来修补文档。

进一步的选择是,每个源和目标URL使用一个文档,而不是每个目标URL使用一个文档和一长串源

{
    ...
    "sourceUrl": "https://example.com/page/1",
    "targetUrl": "https://target.com/page"
}
然后使用视图获取指向给定目标URL的所有源URL的列表:

function(doc) {
    emit(doc.targetUrl, doc.sourceUrl);
}
您也可以使用
\u count
reduce以这种方式快速检索到目标页面的入站链接的计数,预先计算该计数以在UI中显示


此外,
emit(doc.sourceUrl,doc.targetUrl)
将为您提供一个可从给定源向外查询链接的视图。

另一种选择是,每个源和目标URL使用一个文档,而不是每个目标URL使用一个文档和一长串源

{
    ...
    "sourceUrl": "https://example.com/page/1",
    "targetUrl": "https://target.com/page"
}
然后使用视图获取指向给定目标URL的所有源URL的列表:

function(doc) {
    emit(doc.targetUrl, doc.sourceUrl);
}
您也可以使用
\u count
reduce以这种方式快速检索到目标页面的入站链接的计数,预先计算该计数以在UI中显示

此外,
emit(doc.sourceUrl,doc.targetUrl)
将为您提供一个易于查询的视图,用于从给定源向外查询链接