我有一个farm集合,它有apy和liquidity。我想按apy * liquidity的值的顺序得到前10个结果,我试过这样做。var data = models.farm.find().sort({ $expr: { $multiply: ["$apy", "$liquidity"] } }).limit(10)但效果不太好。我怎样才能得到预期的结果?
farm
apy
liquidity
apy * liquidity
var data = models.farm.find().sort({ $expr: { $multiply: ["$apy", "$liquidity"] } }).limit(10)
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 });
1条答案
按热度按时间ubof19bj1#
尝试添加另一个字段,其中包含apy * liquidity的值,如下所示