我发现这个:Handle division by zero in mongoDB如果我直接使用mongoDB来解决除零问题有用,但我找不到用 Morphia 做到这一点的方法
我需要完成的是提到的问题所说的,但是使用Morphia,这就是我没有展示更多代码示例的原因。 任何人都可以告诉我如何使用morphia聚合投影进行除法,并在除数为零的情况下返回0结果?
答案 0 :(得分:1)
您可以尝试使用Projection类来实现此目的。
import static org.mongodb.morphia.aggregation.Projection.divide;
import static org.mongodb.morphia.aggregation.Projection.expression;
import static org.mongodb.morphia.aggregation.Projection.projection;
...
final AggregationPipeline pipeline = datastore.createAggregation(ItemEntity.class)
.project(projection("_id").suppress(),
projection("name", "name"),
projection("upvotes", "upvotes"),
projection("downvotes", "downvotes"),
projection("quality", expression("$cond", expression(FilterOperator.EQUAL.val(), projection("downvotes"), 0), projection("upvotes"), divide(projection("upvotes"), projection("downvotes"))))
)
.sort(Sort.descending("quality"));