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

标签 mongodb mongoose casting aggregation-framework aggregate

考虑以下聚合:

let getUsersWithNoPersonsPromise = () => {

        let pipeline = [
            {
                $lookup: {
                    from: "persons",
                    localField: "id",
                    foreignField: "person_id",
                    as: "persons_users"
                }
            },
            {
                $match: {
                    "persons_users:0": {
                        $exists: false
                    }
                }
            }
        ];


        return User.aggregate(pipeline).exec();
}

如何将 $match 结果转换为 UserModel 类型?我正在获取普通的 javascript 对象,我希望收到 mongoose 用户类型对象。

最佳答案

您可以使用聚合查询的结果,并通过遍历结果数组来简单地实例化新对象,就像这样(假设您使用的是异步等待);

let people = await getUsersWithNoPersonsPromise()
people = people.map(p => new Person(p))

关于mongodb - 如何将 Mongoose 聚合结果转换为特定的文档模式类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48213647/

相关文章:

objective-c - 为什么在 C 中将大 double 转换为 long 有时会返回正值而有时会返回负值?

javascript - 收到错误bundle.js :39454 Uncaught TypeError: Cannot read property 'email' of undefined using MERN stack

mongodb - 使用圆作为区域的地理查询以匹配 MongoDB 中 MultiPoint 对象的至少一个点

ios - Xamarin.iOS随机崩溃无效的强制转换异常

casting - 为什么在将枚举元素分配给 C 中的相同枚举变量类型时必须强制转换枚举元素?

node.js - Mongoose 数组对象中的数字递增

mongodb - 如何在 Ubuntu 12.04 中并行安装两个版本的 mongodb?

node.js - 填充 mongoose 返回 _ids 数组

node.js - 统计 Mongo 中引用对象的数量

javascript - 从回调返回一个值或在node.js 中的特定回调之外访问它?