2012-10-13 37 views
0

我有一個存儲文章的couchdb數據庫。couchdb - 通過時間查詢(修訂版)

我忘記存儲我的文章的創建日期,例如:沒有created_at但只有一個updated_at

我想找回最古老的文章,我的意思是,第一這是創建

由於文章有修改,我想我可以查詢updated_at我的所有文章的每個第一版,從而推斷出第一篇文章的創建時間?

是否可以使用couchdb進行這樣的查詢?

回答

2

不,CouchDB修訂與版本控制系統中的版本不同。 _rev字段是MVCC令牌,它有助於解決寫入衝突並達到eventual consistency。事實上,CouchDB存儲以前的文檔修訂版,但無法通過視圖或其他設計功能訪問它們,它們也將在下一次數據庫壓縮時刪除,並且其編號受限於/db/_revs_limit選項。

您可以嘗試恢復以前的updated_at字段的值,並設置最早的字段爲created_at字段。它可以簡單地用couchdb-python完成:

import couchdb 
server = couchdb.Server() 
db = server['my_db'] 
for idx in db: 
    doc = db[idx] 
    for olddoc in db.revisions(idx): 
     # skips all revisions, we interested in last one as oldest 
     pass 
    doc['created_at'] = olddoc['updated_at'] 
    db.save(doc)