gpt4 book ai didi

javascript - mongodb 聚合 $sort by field value closest to some value

转载 作者:可可西里 更新时间:2023-11-01 09:14:45 26 4
gpt4 key购买 nike

我想使用 aggregation $sort price value closest to 92 对以下聚合输出进行排序我一直用到的聚合

db.units.aggregate([
{$match: {category: 'a'}},
{$limit: 3},
{$project: {price:1, name: 1, category: 1}}
]);

输出

[{'_id': '111', 'price': 100, 'name': 'abc', 'category': 'a'}
{'_id': '222', 'price': 90, 'name': 'efg', 'category': 'a'}
{'_id': '333', 'price': 80, 'name': 'xyz', 'category': 'a'}]

期望的输出:

[{'_id': '222', 'price': 90, 'name': 'efg', 'category': 'a'}
{'_id': '111', 'price': 100, 'name': 'abc', 'category': 'a'}
{'_id': '333', 'price': 80, 'name': 'xyz', 'category': 'a'}]

注意:价格字段是嵌套对象。

最佳答案

这是一个有趣的问题。好吧,这就是我会做的

db.units.aggregate([

{$match: {category: 'a'}},

{$project: {diff: {$abs: {$subtract: [92, '$price']}}, doc: '$$ROOT'}},

{$project :{"diff" : 0}},

{$sort: {diff: 1}}

])

现在,这里发生的是,我将 price 值与提及/指定值的绝对差值。这样你就可以根据差异进行排序。是的..您甚至可以使用 {$project :{"diff": 0}}

从文档中排除该属性

关于javascript - mongodb 聚合 $sort by field value closest to some value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49691521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com