私は一般的にCouchDBとドキュメント指向のデータベースが初めてです。CouchDBでの重複の特定
私はCouchDBを使いこなしていて、ドキュメントの作成(perl)とFutonのMap/Reduce関数を使用してデータをクエリし、ビューを作成することに慣れてきました。
私がまだ解明しようとしていることの1つは、FutonのMap/Reduceを使用してドキュメント間で重複する値を識別する方法です。例えば
私は次の書類があれば、:
{
"_id": "123",
"name": "carl",
"timestamp": "2012-01-27T17:06:03Z"
}
{
"_id": "124",
"name": "carl",
"timestamp": "2012-01-27T17:07:03Z"
}
を私は「名前」の値が重複していた文書IDのリストを取得したい、これは私が布団地図で行うことができますものです/減らす?次のように結果を達成するために期待していた
は次のとおりです。
値、およびそれらの重複する値が含まれている関連する文書IDになり{
"name": "carl",
"dupes": [ "123", "124" ]
}
..or ..
{
"carl": [ "123", "124" ]
}
.. 。
Map/Reduceでいくつかのことを試しましたが、わかっている限り、マップ機能はドキュメントごとのデータで動作し、Reduce機能ではキー/指定されたドキュメントの値。
私はperlで必要なデータを取り込み、そこで魔法を働かせて、私が望む結果を得ることができると知っていますが、私はCouchDBだけでそれをもっと良く理解するために働いています。私が当初考えていたように、マップ/削減機能を使用できるようにする必要があり
{
"_id": "names",
"rec1": {
"_id": "123",
"name": "carl",
"timestamp": "2012-01-27T17:06:03Z"
},
"rec2": {
"_id": "124",
"name": "carl",
"timestamp": "2012-01-27T17:07:03Z"
}
}
..:
私はこれをやって考えているもう一つの方法は、RDBMSのテーブルのように単一のドキュメントを使用することです。しかし、これが理想的かどうかは分かりません。
私はまだ自分の心がRDBMSの土地に詰まっていることを理解していますので、私が上にしようとしていることの多くは必要ではないかもしれません。これについての洞察は非常に高く評価されます。
ありがとうございます!
編集:一部の例でJSON構文が修正されました。
...と重複IDを取得する:?skip = 1&reduce = false&key = "car1" –