Mongo在规范化的欧几里德距离内查询foreach

时间:2014-05-27 13:49:48

标签: mongodb distance

我希望将我在应用层的函数重写为mongodb查询。问题是我想为每条记录返回一组10条记录,这些记录沿着2个标准化维度和一个类别具有最近的欧几里德距离。

我的伪代码现在是......

for each record in collection:
   return records within 0.75 standard deviations of record's value for variable 1,
           within 0.5 sd of record's value for variable 2, 
           same value as record.variable3 # VAR3 is a categorical string 
   sort by (sqrt(((record.var1 - x.var1)/sd.var1)^2 + ((record.var2 - x.var2)/sd.var2)^2))
   limit 10

如果我没有条件,或者如果我没有在查询时将其标准化,或者没有必要将其应用于集合中的每条记录,那么这将是一个很容易。你可以猜到,在python中编写我的数据库的本地副本以及计算SD,距离和处理整个事情都非常耗时。

1 个答案:

答案 0 :(得分:0)

在查询本身中似乎不可能。您必须存储所需变量的转换版本,并在应用程序层中完成剩下的工作。