2

我的地图功能

function(doc, meta) {
  emit([doc.city, doc.region], doc.id);
}

我的查询

?keys=[["New York", "Northeast"]]

这将发出:

{ 
  city: 'New York',
  region: Northeast
}

如果我想使用相同的地图功能仅从东北部获取那些城市,它将无法正常工作。有什么办法只匹配其中一个键吗?喜欢...

?keys=[[null, "Northeast"]]

并输出

[{ 
  city: 'New York',
  region: 'Northeast'
},
{
  city: 'Boston',
  region: 'Northeast'
}]
4

1 回答 1

6

当您在 Couchbase 中使用查询/视图时,您只能从左到右读取密钥。

因此,如果您希望能够查询每个“部分”,您需要创建一个发射的新视图(如果您想在同一视图中进行 2 个发射或创建 2 个视图,您可以这样做)

emit(doc.region, doc.city);

并查询它例如使用

?startkey=["Northeast"]&endkey["Northeast",{}]

此外,如您所见,我不发出 doc.id,这不是必需的,因为 doc.id 始终由 Couchbase 视图发出。

于 2013-03-25T20:10:15.917 回答