如何将猫鼬聚合结果转换为特定的文档模式类型?

Men*_*des 5 casting aggregate mongoose mongodb aggregation-framework

考虑以下聚合:

\n\n
let getUsersWithNoPersonsPromise = () => {\n\n        let pipeline = [\n            {\n                $lookup: {\n                    from: "persons",\n                    localField: "id",\n                    foreignField: "person_id",\n                    as: "persons_users"\n                }\n            },\n            {\n                $match: {\n                    "persons_users:0": {\n                        $exists: false\n                    }\n                }\n            }\n        ];\n\n\n        return User.aggregate(pipeline).exec();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何将$match结果转换为 UserModel 类型?I\xc2\xb4m 在其上获取普通的 javascript 对象,并且我希望收到 mongoose User 类型对象。

\n

Ren*_*ama 3

您可以使用聚合查询的结果,并通过迭代结果数组来简单地实例化新对象,如下所示(假设您正在使用异步等待);

let people = await getUsersWithNoPersonsPromise()
people = people.map(p => new Person(p))
Run Code Online (Sandbox Code Playgroud)