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

如何在MongoDB中实现动态查询指定分类商品或全量商品数据?

问题原因

你当前的写法是将空字符串作为category的固定查询条件,MongoDB执行查询时会严格匹配category字段值等于空字符串的文档,而非忽略该条件返回所有商品,因此没有符合条件的结果时就会返回空数组。

解决方案

你可以动态构造查询条件对象:有合法cat参数时带上分类过滤条件,没有参数时传入空查询对象,就可以实现查询全部分类的需求。
示例代码如下:

// 构造动态查询过滤器
const filter = {}
// 只有请求体中cat参数存在且不为空值时,才添加分类过滤条件
if (req.body.cat && req.body.cat.trim()) {
  filter.category = req.body.cat.trim()
}

let products;
try {
  products = await Product.find(filter);
} catch (e) {
  return next(e);
}

如果不需要做额外的空值校验,也可以简化为一行写法:

const filter = req.body.cat ? { category: req.body.cat } : {}

内容的提问来源于stack exchange,提问作者Mehdi Faraji

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:27:02