Mongoose执行find查询如何将返回的对象数组转为嵌套数组结构
实现方案
你可以通过两种常见方式实现结构转换:
方案1:查询后手动映射(最简便,适合小数据量场景)
拿到Mongoose返回的对象数组后,直接用map遍历转换即可。如果你不需要严格指定字段顺序,直接提取对象所有值即可:
const queryResult = await this.model.find({ lastname: req.lastname}) // 转换为嵌套数组结构 return queryResult.map(item => Object.values(item))
如果需要严格控制字段顺序、或者只需要返回指定字段,可以手动指定取值逻辑:
return queryResult.map(item => [ item.firstname, item.lastname, item.age, // 按你需要的字段和顺序补充即可 ])
方案2:聚合查询直接返回(适合大数据量场景,无需后端二次处理)
直接用Mongoose聚合管道在数据库层面完成格式转换:
return await this.model.aggregate([ // 匹配查询条件 { $match: { lastname: req.lastname } }, // 按你需要的顺序把字段拼装为数组,不需要的字段不用写 { $project: { _id: 0, // 不需要_id的话可以在此处排除 resArray: ["$firstname", "$lastname", "$age"] }}, // 直接把拼装好的数组作为根元素返回 { $replaceRoot: { newRoot: "$resArray" } } ])
内容的提问来源于stack exchange,提问作者Alice
相关产品推荐
相关产品推荐

