0

次の形式のドキュメントを含むデータベースがあります。

{"タイプ" : "A", "日付": "2013-09-19", "週" : "A", "日" : "月"}

{"タイプ" : "B", "週" : "A", "日" : "月", "クラス" : "xyz"}

特定の日付 (doc.Type = "A" から) のすべてのクラス (doc.Type = "B" から) を一覧表示するビューを作成するにはどうすればよいですか? 基本的には、「週」フィールドと「日」フィールドを一致させることを意味します。例を見つけました (主に Christopher Lenz のソリューションに基づいています) が、これらは一致するフィールドが 1 つだけに基づいて一致しており、これはドキュメント タイプの 1 つで一意です。

アップデート

@ダニエルに応じて明確にするために:

URL クエリに日付を入力できるようにしたいと考えています。これは、タイプ「A」ドキュメントに一致します。これから、元のタイプ A と同じ週と日の値を持つすべてのタイプ B のドキュメントが必要です。

4

1 に答える 1

0

これを読んでも、ドキュメント タイプ B にはフィールドがないため、Couch でクエリを 1 つだけ使用する方法がわかりません(一度にクエリできるビューは 1 つだけです) 。dateドキュメントタイプ B のNodateは、複合キーを持つ単一のビューを不可能にします。ドキュメントの変更や再構築を必要とせずに、 2 つのクエリで非常に簡単に実行できます。

最初のクエリ、dateタイプ A ビューでは、2 番目のクエリに必要な値dayと値が得られます。week

2番目のクエリは、次のような複合キーを持つビューに対して実行されます...

"views": {
    "type-A-by-date": {
        "map": "function(doc) { 
            if (doc.type && (doc.type == 'A') { 
                emit([doc.date], [doc.week,doc.day]); 
            } 
        }"
   },
    "type-B-by-week-day": {
        "map": "function(doc) { 
            if (doc.type && doc.type == 'B') { 
                emit([doc.week,doc.day], doc); 
            } 
        }"
   },

これで、元のクエリweekday一致するタイプ B のドキュメントが作成されます。date

さらに情報が必要な場合はLMK :-)

于 2013-09-20T19:30:43.820 に答える