如何在 couchbase 查询中找到结果的位置?
How to find position of result in couchbase query?
我正在寻找一种方法来为有序的 N1QL 查询找到第一个文档的位置(给定某种标准,如 userId="user123"
),所以像这样:
SELECT ARRAY_POSITION(allPoints, "user123")
LET allPoints = (SELECT userId from stuff WHERE ... ORDER BY points DESC, userId ASC)
但是,它不起作用,因为子查询 "allPoints" returns 一个 对象数组 (每个对象只有一个属性 'userId')
发布后 2 分钟得到解决方案:)
我很接近,它是这样工作的:
SELECT ARRAY_POSITION(allPoints, {"userId":"user123"})
LET allPoints = (SELECT userId from stuff WHERE ... ORDER BY points DESC, userId ASC)
当 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)
我正在寻找一种方法来为有序的 N1QL 查询找到第一个文档的位置(给定某种标准,如 userId="user123"
),所以像这样:
SELECT ARRAY_POSITION(allPoints, "user123")
LET allPoints = (SELECT userId from stuff WHERE ... ORDER BY points DESC, userId ASC)
但是,它不起作用,因为子查询 "allPoints" returns 一个 对象数组 (每个对象只有一个属性 'userId')
发布后 2 分钟得到解决方案:)
我很接近,它是这样工作的:
SELECT ARRAY_POSITION(allPoints, {"userId":"user123"})
LET allPoints = (SELECT userId from stuff WHERE ... ORDER BY points DESC, userId ASC)
当 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)