2016-03-03 3 views
0

Вот несколько примеров идентификаторов:Злоупотребления pouchDB в документе ID: Получить первый префикс элемент

someText_1 
someText_2 
someText_3 
someOtherText_1 
someOtherText_2 

Я хотел бы получить «SOMETEXT» -элементный с наибольшим числовым значением после подчеркивания: someText_3

allDocs({startkey: 'someText_', endkey: 'someText_\uffff'}); 

В результате получится все «someText _» - элементы. Есть ли способ получить только «someText_3»? Я хочу избежать запроса карты/сокращения, поскольку гарантированное местное пространство для хранения довольно ограничено.

Я уже прочитал:

http://pouchdb.com/2014/05/01/secondary-indexes-have-landed-in-pouchdb.html (Если не использовать карту/уменьшить)

Pouchdb document id complex key (который имеет ту же проблему)

ответ

1

К сожалению, вы не можете искать "внутри" строку с P/CouchDB _ids - вы можете выполнять только префиксный поиск. И, конечно, префиксный поиск не исправляет целую проблему, потому что в терминах строк 1 < 10 < 2.

Один из вариантов - использовать pouchdb-collate напрямую. Так, например, ваш идентификатор может быть сгенерирован с объекта, такого как [2, 'someText']. Это позволяет легко искать целые числа выше и ниже определенного значения, хотя недостатком является то, что это затрудняет поиск 'someText'.

Другой вариант - просто укусить пулю и использовать карту/сокращение или pouchdb-find. Если ваши запросы достаточно сложны, вам может понадобиться.

+0

Спасибо. К сожалению, поскольку вы заявляете об этом, попытка pouchdb-collate инвертирует проблему в моем случае. Большое спасибо за ваше время. – VapoRizer

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