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

5

考虑以下聚合:

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 User类型的对象。

2个回答

3
您可以使用聚合查询的结果,并通过迭代结果数组来实例化新对象,如下所示(假设您正在使用 async await);
let people = await getUsersWithNoPersonsPromise()
people = people.map(p => new Person(p))

0
你可以使用这个:
const { Query } = require('mongoose');
const mongooseQuery = new Query();

// pass the model and filter to mongoose to cast
// you can add this to pre aggregation middleware
mongooseQuery.cast(Model, filter);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接