2013-09-22 2 views
1

Новое в CouchDB после многих лет MySQL. Почему я получаю метаданные _id и _rev в карте значений в представлении, который возвращает все записи? Вот мое мнение:Почему метаданные _id и _rev в значениях?

"views": "{ 
    "all": "{ 
     "map": "function (doc) { 
      emit(doc.date, doc) 
     }" 
    }" 
}" 

Когда я запрашиваю/базы данных/_design/ID/_view/все, что я получаю следующий JSON:

{"total_rows":2,"offset":0,"rows":[ 
{"id":"b77bbd5ab73b809ca830fe4b6900506f","key":"[2013, 09, 21, 00, 00, 00]","value":{"_id":"b77bbd5ab73b809ca830fe4b6900506f","_rev":"11-b134dfe46f86c96b4f7e2cf0abb13b61","location":"Mesuk Market","product":"Traditional Pork Skewer","total_items":550,"created_at":"[2013, 09, 21, 23, 24, 06]","date":"[2013, 09, 21, 00, 00, 00]"}}, 
{"id":"b77bbd5ab73b809ca830fe4b69005f1e","key":"[2013, 09, 21, 00, 00, 00]","value":{"_id":"b77bbd5ab73b809ca830fe4b69005f1e","_rev":"2-ee4e464cdf5de23563c0cc6b62bc4b07","date":"[2013, 09, 21, 00, 00, 00]","created_at":"[2013, 09, 21, 23, 27, 00]","total_items":100,"product":"All Meat Skewer","location":"Mesuk Market"}} 
]} 

Почему я получаю _id и _rev на карте ценностей? Документы here (и несколько других мест) не отображают эти поля в значениях.

Это действительно не блокирует мою работу над проектом, но я не понимаю, почему это происходит. Это из того, как я настраиваю свое мнение или делаю запрос?

ответ

1

_id и _rev являются special document fields:

  • _id является всей базой данных уникального идентификатора документа
  • _rev İŞ MVCC лексем
+0

Отлично, спасибо за ссылки. Это имеет смысл, но я все еще не понимаю, почему я получаю их в своих значениях, когда ни один из документов CouchDB не показывает, что JSON возвращает с этими полями в значениях. Думаю, я не буду беспокоиться об этом, отбросив разрыв еще на один экземпляр документов, не соответствующих действительности. –

0

_id и _rev значения необходимы для CouchDB. Первый из них, _id (UUID), должен обеспечить уникальность документа в базе данных, второй, _rev (пересмотр), должен гарантировать, что нет никаких конфликтов, а несколько процессов пытаются изменить тот же документ.

Эти поля являются обязательными.

_id назначается CouchDB, когда он не в документе, мы пытаемся создать, _rev всегда назначается CouchDB.

+0

Спасибо за подробную информацию. Все это имеет смысл. –

+1

'_rev' не назначается couchdb. Вы можете разместить документ в базе данных couchd, если вы включили в запрос 'new_edits = false' в URL-адрес, а также предоставили действительный' _rev', couchdb выполнит ваш запрос для хранения документа с данным rev. Это в основном полезно для явного введения конфликтов в CouchDB. (см. здесь для получения дополнительной информации: http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API?highlight=%28new_edits%29) – SingleNegationElimination

Смежные вопросы