У меня есть элементы списка в документах couchdb. Скажем, это 3 элемента в трех документах:
{ "id" : "783587346", "type" : "aList", "content" : "joey", "sort" : 100.0 }
{ "id" : "358734ff6", "type" : "aList", "content" : "jill", "sort" : 110.0 }
{ "id" : "abf587346", "type" : "aList", "content" : "jack", "sort" : 120.0 }
Вид получает все "aList" документы и отображает их отсортированными по "сортировке".
Теперь я хочу переместить элементы, когда я хочу переместить "домкрат" в середину, я мог бы сделать это атомом в одной записи и изменить его ключ сортировки на 105.0. Теперь представление возвращает документы в новом порядке сортировки.
После большой сортировки я мог бы закончиться сортировочными ключами, такими как 50.99999 и 50.99998 через несколько лет, а в экстремальных ситуациях закончились цифры?
Что вы можете посоветовать, есть ли лучший способ сделать это? Я бы предпочел сохранить элементы в отдельных документах. Различные пользователи могут редактировать разные элементы списка параллельно.
И пользователи могут также изменить порядок документов одновременно (что также может стать сложным, когда 2 пользователя хотят переместить два разных документа (например, joey и jill) до конца, и пусть скажет "sort" = 130.0 на том же время).
Может быть, есть намного лучший способ?
Я что-то пропустил на транзакциях CouchDb?