我希望将我在应用层的函数重写为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,距离和处理整个事情都非常耗时。
答案 0 :(得分:0)
在查询本身中似乎不可能。您必须存储所需变量的转换版本,并在应用程序层中完成剩下的工作。