我正在使用JSON-RPC抓取一個90K記錄數據庫,並試圖進行一些基本的錯誤檢查。我想先用兩個不同的設置抓取數據庫兩次,然後在第二個刮片上添加一個前綴。這樣我可以檢查以確保這兩個設置不會產生不同的記錄(由於丟失的更新等)。我想用一個視圖來實現比較,該視圖將來自第一個刮片的每個文檔與由第二個刮片產生的兩個文檔進行比較,然後用它們之間的差異發出記錄的名稱。在CouchDB視圖中引用外部文檔
但是,我無法完全弄清楚如何在視圖中插入另一個文檔,我所閱讀的所有內容僅使用emit()
函數討論外部文檔,這太遲了,無法對其進行比較。在下面的例子中,lookup()
函數將抓取引用的文檔。
這難道不可能嗎?
function(doc) {
if(doc._id.slice(0,1)!=='$' && doc._id.slice(0,1)!== "_"){
var otherDoc = lookup('$test" + doc._id);
if(otherDoc){
var keys = doc.value.keys();
var same = true;
keys.forEach(function(key) {
if ((key.slice(0,1) !== '_') && (key.slice(0,1) !=='$') && (key!=='expires')) {
if (!Object.equal(otherDoc[key], doc[key])) {
same = false;
}
}
});
if(!same){
emit(doc._id, 1);
}
}
}
}