Couchbase - 我应该何时使用N1QL vs Views?

10 couchbase couchbase-view sql++

我正在学习Couchbase,现在是3.x版

我的疑问是,我何时应该使用N1QL查询与View查询?

而且,它们之间是否存在性能差异?


注意:我有一个情况:

一个有两个文档类型为我的旅行应用程序:路线城市

一个路由文档保存有关行驶路线的阵列信息 IDS是它的一部分,然后另一文档保存城市的信息(每个城市有自己的文档).例:

//Bucket : "Traveling App"

{
  "type" : "route"
  "name" : "The Great Adventure",
  "cities" : ["234", "h4345", "h42da"]
}

{
  "type" : "city",
  "name" : "Little Town",
  "UID"  : "234"
}
Run Code Online (Sandbox Code Playgroud)

当我查询某个旅行路线时,我应该进行N1QL查询还是查看查询?

因为我必须首先打开Route doc,获取cities数组而不是获取每个City doc.

我认为这种架构最好,因为有些路线可能只有很少的城市而其他路线可能有很多城市.

小智 5

N1QL看起来很有前途.正如另一张海报所指出的那样,在开发者预览中,它是值得探索的.您可以通过NEST travel_app自行获取所有城市文档与每条路线的"嵌套":

SELECT r.name,c FROM traveling_app r NEST traveling_app c ON KEYS r.cities;

要获得特定路线的城市名称,请使用路线的城市作为关键点连接travel_app:

SELECT c.name as city_name FROM traveling_app r JOIN traveling_app c ON KEYS r.cities WHERE r.name ="The Great Adventure";

无论路线有多少个城市,这些查询都将运行相同的操作.