gpt4 book ai didi

javascript - MongoDB 自定义排序与其他值?

转载 作者:行者123 更新时间:2023-12-02 16:05:35 25 4
gpt4 key购买 nike

我希望能够根据每个项目的以下属性对此集合进行排序。

var distance1 = { velocity : 100, time: 20, rank: time*velocity};
var distance2 = { velocity : 50, time: 25, rank: time*velocity};
var distance3 = { velocity : 300, time: 10, rank: time*velocity};

collection.insert([distance1, distance2, distance3]);

所以基本上按照“距离”(时间*速度)升序排列它们。

列表应如下所示;

  1. 距离2
  2. 距离1
  3. 距离3

但是,排名需要从距离和速度容器中导出,否则当用户更改值时您会遇到问题;

distance1.set(time= "1");
distance1.set(velocity = "1");

distance2.set(time= "100");
distance2.set(velocity = "20");

distance3.set(time= "10000");
distance3.set(velocity = "20000");

应该排名到哪一个;

  1. 距离1
  2. 距离2
  3. 距离3

但如果排名是静态的,则不会这样做。

如何利用 MongoDB 的元和排序功能来允许基于用户输入的动态排名算法?有点像 Reddit 使用点赞来确定页面排名的方式。

编辑:天哪修复了一个愚蠢的物理错误

最佳答案

最有效的方法是在更改应用程序代码中的值时更新 rank 字段(即不允许使用 timevelocity 无需重新计算排名即可设置)。然后,您可以添加适当的索引(或多个索引),包括 rank 字段来支持您的常见查询(有关创建索引的一些有用背景信息,请参阅 Optimizing MongoDB Compound Indexes)。

您还可以通过使用 aggregation framework 的查询动态计算排名 ,但这会涉及对集合中所有匹配文档进行非常低效的重新计算以确定结果顺序。

关于javascript - MongoDB 自定义排序与其他值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30794482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com