梗概

  • 很多API中可以传入一些操作符
  • 不同操作符对应不同的数据操作,可以把查询结果进行操作

管道

  • MongoDB中将待操作数据在操作符中的传递称之为“在管道中的传递”

传递

  • 调用一个API,该API将查询到的数据传入参数里面的第一个操作符,操作符完成操作之后,输出的结果又传递给下一个操作符…

语法

常见语法

{
  $操作符名: {操作符的参数}
}

常用的操作符

实例

child::

表的连接实例

use('local')//切换到数据库
db.getCollection('jobs').aggregate([
    {
        /* 把目标collection与当前collection连接起来 */
        $lookup: {
            from: "classifiedJob",
            localField: "标题",
            foreignField: "标题",
            /* 外来的fields打包全部保存在当前collection中的指定field中 */
            as: "joined"
        }
    },
    {
        /* 把数组展开 */
        $unwind: "$joined"
    },
    {
        /* 给查询结果添加若干个fields */
        $addFields: {
            "职业类别A": "$joined.职业类别A",
            "职业类别B": "$joined.职业类别B",
            "职业类别C": "$joined.职业类别C"
        }
    },
    {
        /* 修改查询结果 */
        $project: {
            "joined": 0,/* 将joined这个field去掉 */
        }
    },
    {
        /* 将查询结果写入到指定collection中 */
        $merge: {
            into: { db: 'test', coll: "joinedJobs" }
        }
    }
])
指向原始笔记的链接

  • “jobs”这个collection的传递过程:[[unwind]]→[[project]]→$merge