Mongodb根据动态字段和静态字段对文档进行排序

时间:2018-10-05 19:17:41

标签: mongodb

我正在尝试编写查询,以便在获取用户列表时,将以取决于两个字段的方式对用户进行排序。

第一个是使用$ geoNear查询计算的距离字段。 第二个字段是用户文档上的“受欢迎程度”字段。

为简单起见,我想按权重为0.7 * distance + 0.3 * popularity的“权重”算法进行排序。

我将如何在mongodb中实现某些功能?甚至有可能在mongodb中有效地做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用aggregation管道进行此操作。您可以有单独的阶段来处理此问题,例如执行地理空间查询并存储计算出的距离,然后执行投影以计算weight,最后对新生成的sort字段执行weight

要有效地做到这一点,那是不会发生的。只有当您拥有一组已知值,并且所需的值在运行时被计算出来之前,它们才是未知的,效率才会提高。只需确保您的$geoNear查询返回的文档子集大小不会有问题,就可以了。