选择couchbase嵌套对象

选择couchbase嵌套对象,couchbase,Couchbase,我有一堆结构如下的文档: { "month": 11, "year": 2017, //other fields "Cars":[ { "CarId": 123, // other fields }, { "CarId": 456, // other fields } // other cars ] } 我正在搜索id为456的具体汽车实例。到目前为止,我已经: SELECT Cars FROM DevBucket WH

我有一堆结构如下的文档:

{
  "month": 11,
  "year": 2017,
  //other fields
  "Cars":[
  {
    "CarId": 123,
    // other fields
  },
  {
    "CarId": 456,
    // other fields
  }
  // other cars
   ]
}
我正在搜索id为456的具体汽车实例。到目前为止,我已经:

SELECT Cars
FROM DevBucket
WHERE year = 2017
    AND month = 11
    AND [CarId=456]
Couchbase返回正确的文档(包含目标车)。但是,输出包括文档中所有
Car
节点的数组,但我希望有一个Car(就像我在上面的示例中使用
SELECT Cars[1]

搜索couchbase教程并没有给我答案。有更好的方法吗?

使用可以执行“嵌套数组与其父对象的联接”。这将为每个嵌套元素生成一个对象,其中包括嵌套元素作为顶级字段,以及原始文档的其余部分(嵌套元素和所有元素)

当其父对象的月份和年份为2017年11月时,此查询将检索id为
456
的汽车

SELECT car
FROM DevBucket db
UNNEST Cars car
WHERE car.CarId = 456 
    AND db.year = 2017
    AND db.month = 11;
创建此索引以比使用主索引更快地查找:

CREATE INDEX cars_index 
    ON DevBucket(DISTINCT ARRAY car.CarId FOR car IN Cars END);
有关
unest
的更多信息,请参阅