Nosql Mongodb:对列进行数学运算后如何排序



我有这些文档

[
{
"_id": "59b804e1ee8a4071a5ea3fcc",
"x": 10.5,
"y": 2.1,
"z": 3.2
},
{
"_id": "59b804e1ee8a4071a5ea2gzz",
"x": 8.2,
"y": 5.1,
"z": 9.2
}
]

我如何用0.5(x) + 0.25(y) + 0.25(z)对这两个文档进行排序?

I tried doing

mydb.find().sort({0.5*x + 0.25*y + 0.25*z: 1})

不工作

一个选择是使用聚合管道:

db.collection.aggregate([
{$addFields: {
w: {
$add: [
{$multiply: ["$x", 0.5]},
{$multiply: ["$y", 0.25]},
{$multiply: ["$z", 0.25]},
]
}
}},
{$sort: {w: 1}},
{$unset: "w"}
])

看看它在操场的例子中是如何工作的

最新更新