如何将Couchbase视图输出输入另一个视图?

时间:2018-07-06 16:28:56

标签: couchbase n1ql

说我有一组不同类型的文档,都包含一个日期字段。我希望获得max(date)的给定类型的文档。但是,日期在每个文档中仅存在一次。这意味着单个视图只能输出每个文档的max(date)。

[{1,date},{1,date},{1,date},{2,date},{2,date}]

因此,从理论上讲,如果我能够在此输出上运行其他视图,则可以轻松获得所需的输出。

[{1,date},{2,date}]

我可以通过查询第一个视图并创建一个新文档,然后由第二个视图使用来完成此操作。由于现在每个文档都有多个日期,因此汇总有效。

但是,这根本不是动态的,并且会增加很多开销-根本就没有实现从简单n1ql切换到目标的目的。

有什么方法可以在Couchbase中链接/嵌套/增加视图?

1 个答案:

答案 0 :(得分:2)

Jacob,您可以使用N1QL进行分页:

  

选择最大值(日期)   从测试桶   WHERE type ='mytype'   GROUP BY GRP   极限10   偏移100

您还可以如下定义视图:

  

地图:   发出(doc.id,doc.date)

     

减少:   _stats

built-in _stats reduce function将发出许多有用的值,包括可能正在寻找的最大值。

您还可以定义自定义的reduce函数。更多详细信息出现在这里: https://developer.couchbase.com/documentation/server/current/views/views-writing.html

通常,除某些需要Views map / reduce功能的小众案例外,N1QL方法应该是首选。从问题描述中,应该可以通过N1QL完成所需的工作。