mongodb中按乘字段a和字段b的值排序

a14dhokn  于 2023-06-29  发布在  Go
关注(0)|答案(1)|浏览(148)

我有一个farm集合,它有apyliquidity。我想按apy * liquidity的值的顺序得到前10个结果,我试过这样做。
var data = models.farm.find().sort({ $expr: { $multiply: ["$apy", "$liquidity"] } }).limit(10)
但效果不太好。
我怎样才能得到预期的结果?

ubof19bj

ubof19bj1#

尝试添加另一个字段,其中包含apy * liquidity的值,如下所示

var data = await models.farm.aggregate([
    {
      $addFields: {
        apy_times_liquidity : { $multiply: ['$apy', '$liquidity'] }
      }
    },
    {
      $sort: { apy_times_liquidity : -1 }
    },
    { $limit: 6 }
  ])
    .exec()
    .then(result => {
      return result;
    })
    .catch(err => {
      console.log(err);
    });

  res.send({ data: data });

相关问题