Soccer и CouchDb (noob, тоскующий по sql и объединениям)

Это не давало мне уснуть до этих крошечных часов. Я хочу, чтобы БД отслеживал футбольный турнир. В каждом матче две команды, дома и в гостях. Каждая команда может быть дома или на выезде из многих матчей.

У меня есть одна БД и два типа документов: "матч" (содержит: home: teamId и away: teamId) и team (содержит: teamId, teamName и т. Д.).

Мне удалось написать рабочее представление, но это означало бы добавление в каждую команду идентификатора каждого матча, в котором она участвует, что не имеет большого логического смысла - это такой взлом.

Любая идея о том, как это мнение должно быть написано? Я почти испытываю желание просто залить губку и использовать вместо нее postgres.

РЕДАКТИРОВАТЬ: что я хочу, чтобы информация о команде как для дома, так и для гостей, учитывая идентификатор матча. Довольно легко сделать два звонка, но я не хочу делать два звонка.

2 ответа

Просто выделите два значения в map для каждого матча, как это:

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

После запроса представления для идентификатора матча 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...}}
]}

Проверьте книгу CouchDB: http://guide.couchdb.org/editions/1/en/why.html

Это бесплатно и включает в себя ответы для начинающих:)

Если вам это нравится, подумайте о покупке. Даже несмотря на то, что Крис и Ян такие классные, они просто выкладывают свою книгу бесплатно, вы все равно должны поддержать великолепную работу, которую они проделали со своей книгой.

Другие вопросы по тегам