1

我正在拼命寻找用 java 构建算术 MongoDB 查询的解决方案。例如,如何构建以下查询:

((test.value1 / test.value2) * 100) > 50 

我尝试了以下不起作用的查询:

{ {"$multiply" : [{"$divide" : ["$test.value1", "$test.value2"]}, "100"]} : {"$gt" : "50"}} 

我不确定是否支持上述嵌套算术运算。提前感谢您的任何建议!!!

4

2 回答 2

2

Lycha 的回答是正确的,$where可能是进行这种临时查询的唯一方法。但是它很慢并且不能使用索引。

如果您的表达式始终采用相同的形式(a / b > 50),我建议在另一个字段中预先计算该除法的结果,对其进行索引,然后直接查询该字段。

如果您需要使用此类表达式执行许多不同的查询,那么有人做出了糟糕的数据库技术选择。

于 2012-05-17T06:07:06.670 回答
1

您可以尝试$where 运算符,它可以让您在 Javascript 中给它条件:

例子:

{ $where: "this.value1/this.value2 > 50" }
于 2012-05-16T21:32:22.697 回答