【问题标题】:Nosql Mongodb: How to order rows after performing mathematical operation on the columnsNosql Mongodb:如何在对列执行数学运算后对行进行排序
【发布时间】:2022-12-20 03:40:49
【问题描述】:

我有这些文件

[
  {
    "_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})

它不起作用。

【问题讨论】:

    标签: mongodb nosql


    【解决方案1】:

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

    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 上的工作原理

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 2019-01-02
      • 1970-01-01
      相关资源
      最近更新 更多