我是CouchDB和麪向文檔的數據庫的新手。在CouchDB中識別重複項
我一直在玩CouchDB,並且能夠熟悉創建文檔(使用perl)並使用蒲團中的Map/Reduce功能來查詢數據並創建視圖。
我仍然試圖弄清楚的一件事是如何使用Futon的Map/Reduce來識別跨文檔的重複值。
舉例來說,如果我有以下文件:
{
"_id": "123",
"name": "carl",
"timestamp": "2012-01-27T17:06:03Z"
}
{
"_id": "124",
"name": "carl",
"timestamp": "2012-01-27T17:07:03Z"
}
,我想獲得的是有重複的「名稱」值文檔ID的列表,這事我會用被褥地圖做/減少?
結果希望實現如下:
{
"name": "carl",
"dupes": [ "123", "124" ]
}
..或者..
{
"carl": [ "123", "124" ]
}
..這將是的值,和相關聯的文檔ID,其包含這些重複的值。
我已經嘗試了一些與Map/Reduce不同的東西,但據我瞭解,Map函數在每個文檔的基礎上處理數據,而Reduce函數只允許您使用鍵/來自給定文檔的值。
我知道我可以將我需要的數據用perl在那裏工作,並獲得我想要的結果,但我現在只想用CouchDB工作,以便更好地理解它的優點/限制。
另一種方式,我想這樣做是使用一個單一的文件就像一個RDBMS表:
{
"_id": "names",
"rec1": {
"_id": "123",
"name": "carl",
"timestamp": "2012-01-27T17:06:03Z"
},
"rec2": {
"_id": "124",
"name": "carl",
"timestamp": "2012-01-27T17:07:03Z"
}
}
..這應該允許我使用Map /在我原本以爲的方式Reduce函數。但我不確定這是否理想。
我知道我的思想還停留在RDBMS的土地上,所以我上面想要做的事情可能沒有必要。任何有關這方面的見解將不勝感激。
謝謝!
編輯:修正了一些例子中的JSON語法。
...並獲取重複ID:?skip = 1&reduce = false&key =「car1」 –
2017-02-23 13:43:55