저는 일반적으로 CouchDB 및 문서 지향 데이터베이스를 처음 사용합니다.CouchDB에서 중복 식별하기
나는 CouchDB를 가지고 놀고 있었고 (펄을 사용하여) 문서를 만드는 방법과 Futon의 Map/Reduce 기능을 사용하여 데이터를 쿼리하고보기를 만드는 것에 익숙해졌습니다.
내가 아직도 알아 내려고하는 것 중 하나는 Futon 's Map/Reduce를 사용하여 문서간에 중복 값을 식별하는 방법입니다. 나는 다음과 같은 서류가있는 경우 예를 들어
는 :
{
"_id": "123",
"name": "carl",
"timestamp": "2012-01-27T17:06:03Z"
}
{
"_id": "124",
"name": "carl",
"timestamp": "2012-01-27T17:07:03Z"
}
을 내가 "이름"값을 복제 한 문서 아이디의 목록을 얻고 싶었다,/I는 이불지도와 함께 할 수있는이 뭔가 줄이다? 다음과 같은 결과를 달성하기 바라고
이다 :
{
"name": "carl",
"dupes": [ "123", "124" ]
}
.. 또는를 ..
그 중복 된 값을 포함하는 값, 및 관련된 문서 ID를 것{
"carl": [ "123", "124" ]
}
.. .
Map/Reduce를 사용하여 몇 가지 다른 작업을 시도했지만 필자가 이해하는 한지도 기능은 문서 단위로 데이터와 함께 작동하며 줄이기 기능은 키/주어진 문서의 값.
필자는 펄 필요가있는 데이터를 가져 와서 거기에서 마술을하고 원하는 결과를 얻을 수 있다는 것을 알았지 만, 장점/제한 사항을 더 잘 이해하기 위해 지금은 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"
}
}
.. . 그러나 이것이 이상적인지 확실하지 않습니다.
나는 내 마음이 RDBMS 토지에 아직도 갇혀 있다는 것을 이해한다. 그래서 나는 위에서 뭘하려고 노력했는지는 불필요 할 수도있다. 이것에 대한 어떤 통찰력이라도 대단히 감사 할 것입니다.
감사합니다.
편집 : 몇 가지 예에서 JSON 구문이 수정되었습니다.
... 및 중복 식별자 얻기 :? skip = 1 & reduce = false & key = "car1" –