$merge的用途是把聚合管道产生的结果写入指定的集合,有时候可以用$merge来做物化视图。需要注意,$meger操作必须是聚合管道的最后一个阶段。具体功能有:
- 能够输出到当前或不同的数据库
- 能够输出到正在聚合的集合(慎重:可能会导致频繁的更新甚至死循环)
- 可以在副本集的二级节点运行,前提是群集所有节点的
featureCompatibilityVersion不小于4.4,且读选项允许二级读取。注意:$merge读取操作会发送到二级节点,写入操作只发生在主节点。- 并非所有版本的驱动都支持
$merge在副本集二级节点的操作,在使用前要确认驱动支持。
- 输出集合不存在时可以自动创建输出集合,数据库不存在时也可以自动创建
- 输出结果可以与现有集合合并,包括:插入新文档、合并文档、替换文档、保持已存在的文档、让操作失败、使用自定义的更新管道处理文档等。
语法
{
$merge: {
into: <collection> -or- {
db: <db>, coll: <collection> },
on: <identifier field> -or- [ <identifier field1>, ...], // 可选
let

最低0.47元/天 解锁文章
1535

被折叠的 条评论
为什么被折叠?



