Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb基于动态字段和静态字段对文档进行排序_Mongodb - Fatal编程技术网

Mongodb基于动态字段和静态字段对文档进行排序

Mongodb基于动态字段和静态字段对文档进行排序,mongodb,Mongodb,我正在尝试编写一个查询,以便在获取用户列表时,根据两个字段对用户进行排序 第一个是使用$geoNear查询计算的距离字段。 第二个字段是用户文档上的“流行度”字段 为简单起见,我想按“权重”算法排序,其中权重为0.7*距离+0.3*流行度 我如何在mongodb中实现一些东西?在mongodb中是否可以有效地实现这一点?您可以使用聚合管道来实现这一点。您可以使用不同的阶段来处理此问题,例如,执行地理空间查询并存储计算的距离,然后执行投影以计算权重,最后对新生成的权重字段执行排序 至于有效地做到这

我正在尝试编写一个查询,以便在获取用户列表时,根据两个字段对用户进行排序

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

为简单起见,我想按“权重”算法排序,其中权重为
0.7*距离+0.3*流行度


我如何在mongodb中实现一些东西?在mongodb中是否可以有效地实现这一点?

您可以使用
聚合
管道来实现这一点。您可以使用不同的阶段来处理此问题,例如,执行地理空间查询并存储计算的距离,然后执行投影以计算
权重
,最后对新生成的
权重
字段执行
排序

至于有效地做到这一点,那是不会发生的。只有当您有一组已知的值,并且在运行时计算之前,您想要的值将是未知的,效率才会发生。只要确保您的
$geoNear
查询返回的文档子集在大小上不会有问题,您就可以了