You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:15:08