gpt4 book ai didi

mongodb - 按两个属性的平均值排序

转载 作者:可可西里 更新时间:2023-11-01 10:05:31 25 4
gpt4 key购买 nike

我需要按两个属性的平均值对查询进行排序,例如 Story.scoped.order_by('(importance + points)/2')

正如我在 MongoDB 上看到的那样和 Origin documentation ,这似乎是不可能的。我是否需要使用平均结果创建第三个属性并按它排序?

| Story           | points | importance
| first expected | 1 | 1
| third expected | 5 | 1
| second expected | 1 | 3

最佳答案

您可以使用 aggregation framework去做这个。我不了解 Ruby/mongoid,但这是在 JavaScript 中的实现方式:

db.coll.aggregate([
{ $project: {
Story: 1,
points: 1,
importance: 1,
avg: { $divide: [{ $add: ['$points', '$importance']}, 2]}}},
{ $sort: { avg: 1}}
], function(err, result){
console.log(result);
}
);

输出:

[ { _id: 50a14fcb9f0d79f4de752828,
Story: 'first expected',
points: 1,
importance: 1,
avg: 1 },
{ _id: 50a14fe59f0d79f4de75282a,
Story: 'second expected',
points: 1,
importance: 3,
avg: 2 },
{ _id: 50a14fd99f0d79f4de752829,
Story: 'third expected',
points: 5,
importance: 1,
avg: 3 } ]

关于mongodb - 按两个属性的平均值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13350076/

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