Не знаю, как будет звучать этот вопрос, но полагал, что я выбросить сигнал Bat все равно ... У меня есть набор данных, подобный следующему:CouchDB - «Выщипывание» документов ближайшего соседа из представления.
[
{ name: "Peter", score: 1000 },
{ name: "James", score: 800 },
{ name: "John", score: 600 },
{ name: "Saul", score: 400 },
{ name: "David", score: 200 }
]
В настоящее время существует несколько вещей, которые я как и с этой коллекцией, но основная функция, на которую я стремлюсь, - это взять данную запись и найти документы, которые сидят непосредственно над и под этим элементом в таблице баллов, например;
[
{ name: "James", score: 800 },
-> { name: "John", score: 600 },
{ name: "Saul", score: 400 }
]
Я хотел бы также создать представление, которое выглядит следующим образом:
[
{ key: 1, value: { name: "Peter", score: 1000 } },
{ key: 2, value: { name: "James", score: 800 } },
{ key: 3, value: { name: "John", score: 600 } },
{ key: 4, value: { name: "Saul", score: 400 } },
{ key: 5, value: { name: "David", score: 200 } }
]
Я не могу помочь, но чувствую, что эти две проблемы связаны. Я также заинтересован в том, чтобы выполнить «выщипывание» в виде небольшого количества запросов REST, насколько это возможно ...
Я также с радостью принимаю решение, основанное на прикладном уровне, но опять же, я бы например, чтобы избежать нескольких поездок в БД, а также хотелось бы избежать вытащить больше данных, чем необходимо.
Любые идеи?
Это решение, которое я имею в виду. Я увлекаюсь «ключом: n», потому что я хочу избежать того, чтобы вытащить набор результатов из 1000 строк (или что-то еще), чтобы узнать, где «Питер» сидит в таблице. Еще одна вещь, которую я хотел бы сделать, - это вытащить документ по идентификатору и определить его рейтинг (и, возможно, выщипывать соседей), не возвращаясь к БД и не запросив свойство счета. Поэтому я пытаюсь подвести итог, насколько сложно, что все может быть ... Это разумно? – Charlie
В общем случае вам нужно рассчитать свой «ключ» на уровне приложения, особенно если вы пытаетесь создать список рейтингов в реальном времени. Причина проста: представления обновляются инкрементально только для измененных документов. Если вы добавите Майка со счетом 1200, ваше представление будет обновляться только для этого документа, но другие остаются нетронутыми. Это может привести к неудобным результатам. – Kxepal
@Charlie: Вы можете получить ключ: n, используя функцию списка сверху. –