Выявление дубликатов в CouchDB

Я новичок в CouchDB и базах данных, ориентированных на документы в целом.

Я экспериментировал с CouchDB и смог познакомиться с созданием документов (с Perl) и использованием функций Map / Reduce в Futon для запроса данных и создания представлений.

Я все еще пытаюсь понять, как определять повторяющиеся значения в документах с помощью Futon Map / Reduce.

Например, если у меня есть следующие документы:

{
  "_id": "123",
  "name": "carl",
  "timestamp": "2012-01-27T17:06:03Z"
}

{
  "_id": "124",
  "name": "carl",
  "timestamp": "2012-01-27T17:07:03Z"
}

И я хотел получить список идентификаторов документов с повторяющимися значениями «name», могу ли я это сделать с помощью Futon Map / Reduce?

Результат, на который надеялись получить, выглядит следующим образом:

{
  "name": "carl",
  "dupes": [ "123", "124" ]
}

.. или ..

{
  "carl": [ "123", "124" ]
}

.., которое будет значением, и связанные идентификаторы документов, которые содержат эти повторяющиеся значения.

Я пробовал несколько разных вещей с Map / Reduce, но, насколько я понимаю, функция Map работает с данными для каждого документа, а функции 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"
  }
}

..что должно позволить мне использовать функции Map / Reduce так, как я думал изначально. Однако я не уверен, что это идеально.

Я понимаю, что мой разум все еще застрял в земле РСУБД, поэтому многое из того, что я пытаюсь сделать выше, может оказаться ненужным. Любое понимание этого было бы очень полезно.

Спасибо!

Edit: Исправлен синтаксис JSON в некоторых примерах.

6
задан jbobbylopez 27 January 2012 в 19:03
поделиться