0

記事を保存するcouchdbデータベースがあります。

記事の作成日を保存するのを忘れましcreated_atた。updated_at

最も古い記事、つまり最初に作成された記事を取得したいと思います。

updated_at記事にはリビジョンがあるので、すべての記事の最初のリビジョンごとにクエリを実行して、最初の記事がいつ作成されたかを推測できると思いますか?

couchdb でそのようなクエリを作成することは可能ですか?

4

1 に答える 1

2

いいえ、CouchDB のリビジョンはバージョン管理システムと同じリビジョンではありません。この_revフィールドは、書き込みの競合を解決し、結果整合性を達成するのに役立つMVCCトークンです。CouchDB が以前のドキュメントのリビジョンを保存していることは事実ですが、ビューやその他の設計機能を介してそれらにアクセスすることはできず、次のデータベースの圧縮時にも削除され、その数は/db/_revs_limitオプションによって制限されます。

フィールドの以前の値を復元updated_atして、最も古い値をフィールドとして設定することができcreated_atます。それは単にchairdb-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)
于 2012-10-14T00:20:14.863 に答える