合并子数组并排序:如何用ReQL提取所有消息并关联父字段按日期排序
ReQL 解决方案
完整查询语句
r.table('production_plan') .filter(doc => doc.hasFields('messages')) .concatMap(doc => doc('messages').map(msg => msg.merge({ id: doc('id'), nomer: doc('nomer'), diameter: doc('diameter') }) ) ) .orderBy('date') .coerceTo('array') .do(res => ({ messages: res }))
逻辑说明
- 保留原有筛选逻辑,仅处理存在
messages字段的文档 - 通过
concatMap将所有文档的messages子数组展平为单层级的消息列表,同时为每条消息合并所属文档的id、nomer、diameter字段 - 通过
orderBy按date字段对全部消息做升序排序,如需倒序可替换为orderBy(r.desc('date')) - 最后将排序后的消息数组封装为外层带
messages键的对象,匹配预期输出格式
内容的提问来源于stack exchange,提问作者Dmitry Vasilev
相关产品推荐
相关产品推荐

