3

ソート可能な形式 (2009/05/07 21:40:17 +0000) で created_at タイムスタンプを取得し、より大きな created_at 値を持つすべてのドキュメントを返す couchdb ビューを作成しようとしています。

具体的にはcouch_fooを使用していますが、ビューの書き方がわかれば、couch_fooに任せるのではなく、futonまたはcouch_fooモデルで作成できます。

私はあちこちを検索しましたが、可能であれば、これを行うための map/reduce を理解できません。

4

3 に答える 3

4

これは、ビューがどのように機能するかを完全に理解する前に最初に遭遇した種類の問題です。

理解の鍵は、ビューがドキュメント(のリビジョン)ごとに1回だけ実行されることです。つまり、ビューをクエリするときは、関数を実行するのではなく、関数を実行したときの結果を検索するだけです。そのため、ユーザーが送信したパラメーターをビューに渡す方法はありません。

次に、ビュー内の値をユーザーが送信した値と比較するにはどうすればよいですか?秘訣は、そのフィールドをマップ関数のキーとして発行し、couchdbにキーで順序付けさせることに依存することです。

マップ関数は次のようになります

"map" : "function(doc) { emit(doc.created_at, doc); }"

そして、あなたはそれを次のようにクエリします:

http://localhost:5984/db/_design/ddoc/_view/view?startkey=%222009/05/07%2021:40:17 +0000%22

そのまま使用できるように、URL内の引用符とスペースをuriEncodingする自由を取りました。

于 2011-07-01T13:44:52.460 に答える
3

タイムスタンプ フィールドのキーをその形式で作成するビューを作成し、startkeyパラメーターを使用してクエリを実行します。

したがって、ビューは次のようになります。

"map" : "function(doc) { emit(doc.timestamp_field, doc) }"

URL は次のようになります。

http://mysever/database/_design/mydoc/_view/myview?startkey="2009/05/07 21:40:17 +0000"

WikiHTTP ビュー APIページに詳細があります。User Mailing Listも検討してください。

于 2009-05-08T05:08:49.640 に答える
1

couchdb は json 値でのみ機能することに注意してください。couchdb に保存されているドキュメントのタイムゾーンが startkey のタイムゾーンと異なる場合、クエリは失敗する可能性があります。

于 2009-07-31T22:45:04.963 に答える