Mongoose语法求助:如何查询batchSize介于lotSizeMin与lotSizeMax间的数据
正确的Mongoose查询语法
问题原因
你当前的查询写法有误:.where(batchSize)是把变量batchSize的值当成了集合的字段名,而不是用这个值去匹配集合里lotSizeMin和lotSizeMax的范围,所以查不到数据。正确逻辑是找inspectionLevel等于aqlLevel,且batchSize落在lotSizeMin到lotSizeMax区间内的文档。
两种可行的查询写法
写法一:链式调用方式
let aqlLevel = find.aqlLevel; let batchSize = find.batchSize; let findSampleSizeCodeLetter = await SampleSize.find({ inspectionLevel: aqlLevel }) .where('lotSizeMin').lte(batchSize) .where('lotSizeMax').gte(batchSize) .exec();
写法二:直接在查询条件中定义
let aqlLevel = find.aqlLevel; let batchSize = find.batchSize; let findSampleSizeCodeLetter = await SampleSize.find({ inspectionLevel: aqlLevel, lotSizeMin: { $lte: batchSize }, lotSizeMax: { $gte: batchSize } }).exec();
逻辑说明
两种写法效果完全一致:
- 先筛选出
inspectionLevel与传入的aqlLevel匹配的文档 - 再进一步过滤出批次大小区间包含
batchSize的记录(即lotSizeMin ≤ batchSize ≤ lotSizeMax)
内容的提问来源于stack exchange,提问作者Freedom Trail
相关产品推荐
相关产品推荐

