1

カウチ データベースには 2 種類のドキュメントがあります。イベントとオカレンスがあります。1 つのイベントには多くのオカレンスがあります。

イベント:

{
  "_id": "49bb92b8896515a2994e524b38a041d3",
  "type": "Event",
  "eventID": 1234,
  "area": "m1"
}

発生:

{
  "_id": "49bb92b8896515a2994e524b38a041d4",
  "type": "Occurence",
  "occurenceID": 7890,
  "eventID": 1234,
  "date": "2013-01-01"
}

地域名と日付の範囲でフィルター処理された、日付ごとの発生数を見つける必要があります。SQL では、次のクエリを使用します。

SELECT Date, count(*)
FROM Event INNER JOIN Occurence ON Occurence.EventID = Event.EventID
WHERE Event.Area = "m1"
AND Occurence.Date BETWEEN '2013-01-01' AND '2013-02-01'
GROUP BY Date

複数のクエリを実行してもかまいませんが、データベースには 300,000 を超えるオカレンス ドキュメントがあり (そしてその 10 倍に増えるでしょう)、できるだけ少ないドキュメントを変換して結果を取得する必要があります。このcouchdbをクエリするアプリはnode.jsで書かれています。

4

1 に答える 1

1

ええ、これを正しく行うには 2 つのクエリが必要になると思います。イベント領域をオカレンス ドキュメントにコピーして非正規化することを検討する必要があります。これにより、はるかに簡単になります。

于 2013-03-19T13:59:04.330 に答える