Как найти позицию результата в запросе couchbase? - PullRequest
0 голосов
/ 04 июля 2019

Я ищу способ найти позицию первого документа (с учетом каких-то критериев, таких как userId="user123") для упорядоченного запроса N1QL, поэтому что-то вроде этого:

SELECT ARRAY_POSITION(allPoints, "user123")
LET allPoints = (SELECT userId from stuff WHERE ... ORDER BY points DESC, userId ASC)

Однако, это не работает, так как подзапрос "allPoints" возвращает массив объектов (каждый из которых имеет только один атрибут, который является 'userId')

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Вы также можете использовать следующее выражение для поиска позиции в массиве точек, когда lang 10.0 и lat 20.1 (предложение WHEN может иметь любой тип условия)

(FIRST pos FOR pos:v IN points WHEN v.lang = 10.0 AND v.lat = 20.1 END)
0 голосов
/ 04 июля 2019

Получил решение через 2 минуты после публикации:)

Я был довольно близко, это работает так:

SELECT ARRAY_POSITION(allPoints, {"userId":"user123"})
LET allPoints = (SELECT userId from stuff WHERE ... ORDER BY points DESC, userId ASC)
...