我有一个存储文章的 couchdb 数据库。
我忘记存储我的文章的创建日期,例如:没有created_at
,但只有一个updated_at
我想检索最旧的文章,我的意思是第一个创建的文章。
由于文章有修订,我想我可以查询我updated_at
所有文章的每个第一次修订,从而推断出第一篇文章的创建时间?
是否可以使用 couchdb 进行这样的查询?
我有一个存储文章的 couchdb 数据库。
我忘记存储我的文章的创建日期,例如:没有created_at
,但只有一个updated_at
我想检索最旧的文章,我的意思是第一个创建的文章。
由于文章有修订,我想我可以查询我updated_at
所有文章的每个第一次修订,从而推断出第一篇文章的创建时间?
是否可以使用 couchdb 进行这样的查询?
不,CouchDB 修订版与版本控制系统中的修订版不同。该_rev
字段是一个MVCC令牌,有助于解决写入冲突并达到最终一致性。事实上,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)