Couch DB Joinsに記載されている例を見てください。CouchDBビューの照合、1つのキーへの結合、他の値の検索
ビューの照合とブログ記事に対して1つのドキュメントを作成する方法について説明しています。その後、各コメントはCouchDBで別々のドキュメントになります。たとえば、「マイ・ポスト」と5つのコメント「マイ・ポスト」と合計6個のドキュメントが関連付けられています。これらの例では、"myslug"は、ポスト文書と各コメント文書の両方に格納されているため、の "myslug"キーを使用してCouchDBを検索すると、すべての文書が返されます。
ここに問題/質問があります。コメントの投稿者と、カテゴリが「ニュース」の投稿を検索したいとします。どのようにこれは正確に動作するのでしょうか?例えばので
:著者ボブのコメントをつかむ、?startkey=["myslug"]
しかし、私はこれをしたい、と:これに基づいて、私のブログの記事やコメントをロードします
function(doc) {
if (doc.type == "post") {
emit([doc._id, 0], doc);
} else if (doc.type == "comment") {
emit([doc.post, 1], doc);
}
}
カテゴリニュースの投稿です。この例では、ボブは、ニュースのブログ投稿に3つのコメントを書いています。 CouchDBは、両方のドキュメントに存在するキーだけを検索し、あるドキュメントのキーを検索しないようにし、がマップ関数と共にに「参加」したように見えます。
つまり、投稿とコメントがスラッグによって結合されている場合、id akaで結合された1つのドキュメントと別のドキュメントの別のフィールドを検索するにはどうすればよいですか。スラッグ?
それはこのようなものになるだろうSQLで:私はほとんどあなたの質問に答えるために資格ないんだけど、私は私がに来ていると思うので、私はおよそ一週間のCouchDBを調査してきた
SELECT * FROM comments JOIN doc.id ON doc.post WHERE author = bob AND category = news
これは興味深い質問です。しかし、私はまだあなたが必要とするものが正確に不明です。 SQLでどのように動作するのか説明することは可能ですか?それから私達はカウチ方法を示すことができます! – JasonSmith
問題はありません...(私の文法を許してください)...コメントから選択する* doc.postのauthor = bobとcategory = newsのところでdoc.idに参加してください。言い換えれば、私はslug/idのpostsテーブルとcommentsテーブルに参加しています。そして、投稿者のコメントとカテゴリの投稿を検索しています。カテゴリニュースと作者によるコメントのみbob – Matt
私はあなたが探しているものを正確に知っています。私はこの記事を見に行きましたhttp://jamietalbot.com/2010/03/24/using-multiple-start-and-end-keys-for-couchdb-views/これはあなたが必要とするものかもしれません。 – Mark