Json 如何将一组非平凡数据与一系列非平凡数据进行匹配?

Json 如何将一组非平凡数据与一系列非平凡数据进行匹配?,json,node.js,mongodb,associations,matching,Json,Node.js,Mongodb,Associations,Matching,我有一段数据,如: data = { occupation: doctor, waistSize: 32, height: 67 } 我还有另一段数据,我们称之为数据范围,它看起来像: dataRange = { rangeName : rangeOne, occupation: [doctor, lawyer, teacher],

我有一段数据,如:

data = { 
          occupation: doctor,
          waistSize: 32, 
          height: 67
       }
我还有另一段数据,我们称之为数据范围,它看起来像:

dataRange = {  
               rangeName : rangeOne,
               occupation: [doctor, lawyer, teacher],
               waistSize : {min: 28, max: 40}, 
                  height : {min: 50, max: 70}
            }
我的问题是,如何快速高效地找到所有包含“数据”的“数据范围”。我不一定需要一个完整的答案,只是需要一些关于该走哪条路的建议。我的程序将包含几百个“数据范围”,我需要能够找到包含变量“data”的所有“数据范围”

下面是我脑子里想出来的答案,但我觉得这是非常低效的,特别是当“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} } );
此外,最终我们希望创建一个系统,其中您有一个“匹配百分比”,该值将表示“数据”在“数据范围”内的接近程度


解决方案需要使用node.js和mongodb实现

什么语言?JAVAC#?我使用的是node.js和mongodb,所以javascript和数据都是JSONIt,如果您将问题编辑为包含您不满意的琐碎答案,这会有所帮助。您不需要在这里使用
$elemMatch
(只需使用
职业:data.occupation
),而且您缺少一些冒号,但在其他方面看起来是最佳的。非常感谢,约翰尼。您知道是否有一种方法可以查找、排列和返回与dataRange完全匹配但不完全匹配的数据吗?