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
Это бесплатно и включает в себя ответы для начинающих:)
Если вам это нравится, подумайте о покупке. Даже несмотря на то, что Крис и Ян такие классные, они просто выкладывают свою книгу бесплатно, вы все равно должны поддержать великолепную работу, которую они проделали со своей книгой.