0

这让我一直睡到凌晨。我想要一个数据库来跟踪足球比赛。每场比赛有两支球队,主客场。每支球队都可以是多场比赛的主队或客队。

我有一个数据库和两种文档类型,“匹配”(包含:home:teamId 和 away:teamId)和团队(包含:teamId、teamName 等)。

我已经设法编写了一个工作视图,但这意味着向每个团队添加它所参与的每场比赛的 id,这没有多大逻辑意义 - 这是一个 hack。

关于如何编写此视图的任何想法?我几乎想把海绵扔进去,改用 postgres。

编辑:我想要的是获得主队和客队的球队信息,给定一场比赛的 id。打两个电话很容易,但我不想打两个电话。

4

2 回答 2

1

map只需为每个匹配发出两个值,如下所示:

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

在查询视图以获取匹配 IDMATCHID后:

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 书籍: http: //guide.couchdb.org/editions/1/en/why.html

它是免费的,包括对初学者的回答:)

如果你喜欢它,可以考虑购买它。即使认为 Chris 和 Jan 太棒了,他们只是将他们的书免费放在那里,你仍然应该支持他们为他们的书所做的伟大工作。

于 2012-08-25T10:59:21.233 回答