我有一段数据,如:
data = {
occupation: doctor,
waistSize: 32,
height: 67
}
我还有另一段数据,我们将其称为数据范围,它看起来像:
dataRange = {
rangeName : rangeOne,
occupation: [doctor, lawyer, teacher],
waistSize : {min: 28, max: 40},
height : {min: 50, max: 70}
}
我的问题是,如何快速有效地找到包含“数据”的所有“dataRanges”。我不一定需要一个完整的答案,只需要提出一些建议。我的程序将包含几百个“dataRanges”,我需要能够找到包含变量“data”的所有“dataRanges”。
我想到的答案如下所示,但我觉得这非常低效,特别是当“dataRange”中的字段数量接近35时。
db.dataRanges.find( { occupation: { $elemMatch: data.occupation } },
{ waistSize.min: {$lt : data.waistSize } },
{ waistSize.max: {$gt : data.waistSize } } ,
{ height.min: {$lt : data.height} },
{ height.max: {$gt : data.height} } );
另外,最终我们想要创建一个系统,你有一个“matchPercentage”,这个值将表示“data”在“dataRange”中的接近程度。
需要使用node.js和mongodb来实现解决方案。