2016-02-27 74 views
0

我正在嘗試創建一個couchbase視圖,用於檢索所有未超過一個月更新的視圖的ID。 他們也應該不會有串ID在他們的關鍵:Couchbase查看超過一個月的文檔

function (doc, meta) { 

    if (meta.id.indexOf("ID") == -1) { 
    var currentDate = new Date(); 
    var currentDateInMillis = currentDate.getTime(); 
    if (doc.lastTimestampMillis != null && doc.lastTimestampMillis < (currentDateInMillis - (30 * 24 * 60 * 60 * 1000))) { 
     emit(meta.id, meta.id) 
    } 
    } 
} 

請注意,我有我的文檔中lastTimestampMillis領域。

嗯,這段代碼不起作用。

回答

2

而不是在視圖代碼中實現日期檢查邏輯,只發出doc.lastTimestampMillis,然後查詢您想要的日期。例如。 query.endkey(<now - 30d>)將爲您提供30天前的所有時間戳。由於發佈的值只在文檔更改時更新,因此您寫入的視圖幾乎立即變爲陳舊。只有發佈時間戳才能讓您查詢任何日期範圍,並且始終實際反映正確的時間戳。

+0

但是,這將導致包含桶中幾乎所有文檔的視圖? –

+0

它不包含文檔,只是時間戳和文檔鍵。但是,是的,它將包含與具有時間戳的文檔一樣多的項目。如果你有數十億的文檔,這可能會很多。但這是實現你想要的最可靠的方法。 –