变态的 mongodb 联表查询之 数据扁平化

696 阅读1分钟

起因

新增临时的uid,及user数组对象

新增的数据

解决方案 1

1.使用 let 及 pipeline 方式 的 $lookup,消除中间变量 uid

$lookup: {
    from: "users",
    let: { uid: {"$toString":{"$toLong":"$userId"}} },
    pipeline: [
      ...
    ],
    as: "user"
}

2.使用 $unwind 把 user 数组变成 user 对象, 使用 $set 把 新增所需变量 如 userName: "$user.userName" 使用 $unset 移除 user 对象

扁平化之前

扁平化之后

遗留

目前query结果的数据已经扁平化,性能待测试。

该问题正在研究中