在Mongoose中如何通过虚拟属性过滤关联文档并统计库存数量?
你可以直接在虚拟属性的配置中新增match筛选条件和count计数参数,不需要修改后续查询逻辑即可直接拿到符合要求的库存数量,配置如下:
ItemSchema.virtual('numberInStock', { ref: 'ItemInstance', localField: '_id', foreignField: 'item', // 筛选状态为"In Stock"的关联文档 match: { status: 'In Stock' }, // 开启计数模式,直接返回匹配的文档总数而非数组 count: true });
使用时正常填充该虚拟字段即可:
// 查询Item示例 const item = await ItemModel.findById('你的ItemID').populate('numberInStock'); // 此时item.numberInStock直接返回符合条件的数量,你的示例数据中返回值为2 console.log(item.numberInStock);
该配置支持Mongoose 4.0及以上版本,match参数也支持多条件组合过滤,可根据业务需求扩展筛选规则。
内容的提问来源于stack exchange,提问作者Matt Di Micelli
相关产品推荐
相关产品推荐

