使用Node.js和MongoDB按去重productId批量查询集合文档实现问题
实现动态批量查询的方法
核心逻辑
只需要两步就能完成硬编码内容的替换:
- 从
req.bidder.myBids数组中提取所有productId字段,再做去重处理 - 将去重后的数组替换
$in后的硬编码内容即可
具体代码实现
我们可以用Set结构实现快速去重,代码如下:
var agencyId = req.body.agencyId; if (!validate.STRING(agencyId)) { res.apiError(messages.server.invalid_request); } else { // 提取所有productId并去重 const uniqueProductIds = [...new Set(req.bidder.myBids.map(bid => bid.productId))]; // 可选:增加空数组校验,避免查询返回所有产品 if (uniqueProductIds.length === 0) { return res.json([]); } dbProduct.find({ productId: {$in: uniqueProductIds} }).then(dbRes => { console.log(dbRes); // 输出JSON格式结果 res.json(dbRes); }) }
代码说明
req.bidder.myBids.map(bid => bid.productId):遍历出价数组,提取所有productId,生成一个仅包含productId的数组new Set():利用Set结构的特性自动去除重复值- 扩展运算符
[... ]将Set结构转回普通数组,可直接传入MongoDB的$in查询条件中
内容的提问来源于stack exchange,提问作者Orange Juice Jones
相关产品推荐
相关产品推荐

