说我有一组不同类型的文档,都包含一个日期字段。我希望获得max(date)
的给定类型的文档。但是,日期在每个文档中仅存在一次。这意味着单个视图只能输出每个文档的max(date)。
[{1,date},{1,date},{1,date},{2,date},{2,date}]
因此,从理论上讲,如果我能够在此输出上运行其他视图,则可以轻松获得所需的输出。
[{1,date},{2,date}]
我可以通过查询第一个视图并创建一个新文档,然后由第二个视图使用来完成此操作。由于现在每个文档都有多个日期,因此汇总有效。
但是,这根本不是动态的,并且会增加很多开销-根本就没有实现从简单n1ql切换到目标的目的。
有什么方法可以在Couchbase中链接/嵌套/增加视图?
答案 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完成所需的工作。