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

jpfvwuh4  于 2022-12-12  发布在  Go
关注(0)|答案(1)|浏览(123)

我有这些文件

[
  {
    "_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)的文档进行排序?
我试过

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

但它不起作用。

kzipqqlq

kzipqqlq1#

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

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

了解它在playground example上的工作原理

相关问题