0

これは私をこれらのほんの少しの時間まで目覚めさせ続けました。サッカートーナメントを追跡するデータベースが必要です。各試合には、ホームとアウェイの2つのチームがあります。各チームは、多くの試合のホームまたはアウェイになることができます。

1つのdbと、「match」(ホーム:teamIdとaway:teamIdを含む)とteam(teamId、teamNameなどを含む)の2つのドキュメントタイプがあります。

私はなんとか実用的なビューを書くことができましたが、それは各チームにそれが関与するすべての試合のIDを追加することを意味します。これはあまり論理的に意味がありません-それはそのようなハックです。

このビューをどのように書くべきかについて何か考えはありますか?スポンジを入れて、代わりにpostgresを使用したくなります。

編集:私が欲しいのは、試合のIDを指定して、ホームチームとアウェイチームの両方のチーム情報を取得することです。2回の呼び出しは非常に簡単ですが、2回の呼び出しはしたくありません。

4

2 に答える 2

1

map次のように、一致ごとに 2 つの値を出力するだけです。

function (doc) {
  if (!doc.home || !doc.away) return;
  emit([doc._id, "home"], { _id: doc.home });
  emit([doc._id, "away"], { _id: doc.away });
}

一致 ID のビューをクエリした後MATCHID:

curl 'http://localhost:5984/yourdb/_design/yourpp/_view/yourview?startkey=\["MATCHID"\]&endkey=\["MATCHID",\{\}\]&include_docs=true'

おそらく以下のように、doc結果のリスト ( ) のフィールドで両方のチームのドキュメントを取得できるはずです。row

{"total_rows":2,"offset":0,"rows":[
{"id":"MATCHID","key":["MATCHID","home"],"value":{"_id":"first_team_id"},"doc":{...full doc of the first team...}},
{"id":"MATCHID","key":["MATCHID","away"],"value":{"_id":"second_team_id"},"doc":{...full doc of the second team...}}
]}
于 2012-08-24T13:35:08.543 に答える
0

CouchDB Book を確認してください: http://guide.couchdb.org/editions/1/en/why.html

それは無料で、初心者への回答が含まれています:)

気に入ったら、購入を検討してください。Chris と Jan があまりにも素晴らしいので、無料で本を出版したとしても、彼らが本で行った素晴らしい仕事をサポートする必要があります。

于 2012-08-25T10:59:21.233 に答える