Couchbase 获取数组表达式中当前元素的索引的方法?

Couchbase 获取数组表达式中当前元素的索引的方法?,couchbase,n1ql,nosql,Couchbase,N1ql,Nosql,该表达式的工作原理与JS中的方法类似,它将元素从一个数组转换为一个新数组。数组缺少的一点是获取当前元素索引的能力 例如,在n1ql中有没有一种方法可以简洁地使用数组实现这一点 // returns [{x: 7, i: 0}, {x: 3, i: 1}] [{x: 7}, {x: 3}].map((obj, i) => ({...obj, i})); 类似这样的API会很好: SELECT ARRAY OBJECT_PUT(obj, "i", i) FOR obj, i IN [{x:

该表达式的工作原理与JS中的方法类似,它将元素从一个数组转换为一个新数组。数组缺少的一点是获取当前元素索引的能力

例如,在n1ql中有没有一种方法可以简洁地使用数组实现这一点

// returns [{x: 7, i: 0}, {x: 3, i: 1}]
[{x: 7}, {x: 3}].map((obj, i) => ({...obj, i}));
类似这样的API会很好:

SELECT ARRAY OBJECT_PUT(obj, "i", i) FOR obj, i IN [{x: 7}, {x: 3}] END
其中,您可以在
之后为
定义两个变量:第一个是当前数组元素,可选的第二个变量是当前数组索引

有没有一种有效的方法可以轻松地执行此操作?

您可以使用ARRAY\u POSITION()函数获取索引

而且,可以在数组构造中使用多个FOR表达式,这些表达式可以一起迭代(即它们应该具有相同的大小)。

例如:

SELECT ARRAY {i, j} FOR i IN [10, 11, 12], j IN [0, 1, 2] END;
[
  {
    "$1": [
      {
        "i": 10,
        "j": 0
      },
      {
        "i": 11,
        "j": 1
      },
      {
        "i": 12,
        "j": 2
      }
    ]
  }
]

选择数组{“x”:v.x,“i”:数组{u POS([{“x”:7},{“x”:3}],v}作为[{“x”:7},{“x”:3}]结尾处的v

也请让我知道这是否是一个很好的功能要求,我可以写在哪里。有没有不重复的方法?在我的例子中,数组是一个复杂表达式的结果。你能把这个解决方案推广到数组表达式吗?例如,如果数组内容未知,您如何知道
j
应该是什么值?