Ami*_*mar 5 javascript mongodb meteor aggregation-framework
我想使用聚合 $sort 价格值最接近 我一直使用的 92 聚合来对以下聚合输出进行排序
db.units.aggregate([
{$match: {category: 'a'}},
{$limit: 3},
{$project: {price:1, name: 1, category: 1}}
]);
Run Code Online (Sandbox Code Playgroud)
输出
[{'_id': '111', 'price': 100, 'name': 'abc', 'category': 'a'}
{'_id': '222', 'price': 90, 'name': 'efg', 'category': 'a'}
{'_id': '333', 'price': 80, 'name': 'xyz', 'category': 'a'}]
Run Code Online (Sandbox Code Playgroud)
期望的输出:
[{'_id': '222', 'price': 90, 'name': 'efg', 'category': 'a'}
{'_id': '111', 'price': 100, 'name': 'abc', 'category': 'a'}
{'_id': '333', 'price': 80, 'name': 'xyz', 'category': 'a'}]
Run Code Online (Sandbox Code Playgroud)
注意:价格字段是嵌套对象。
这是一个有趣的问题。好吧,这就是我会做的
db.units.aggregate([
{$match: {category: 'a'}},
{$project: {diff: {$abs: {$subtract: [92, '$price']}}, doc: '$$ROOT'}},
{$project :{"diff" : 0}},
{$sort: {diff: 1}}
])
Run Code Online (Sandbox Code Playgroud)
price现在,这里发生的事情是,我取值与提到/指定值的绝对差。这样你就可以根据差异进行排序。是的..您甚至可以使用从文档中排除该属性{$project :{"diff" : 0}}
| 归档时间: |
|
| 查看次数: |
714 次 |
| 最近记录: |