gpt4 book ai didi

mongodb - 使用每个对象内部的值对对象数组进行排序(聚合框架)

转载 作者:行者123 更新时间:2023-12-04 10:02:05 25 4
gpt4 key购买 nike

假设我有这些文件:

[
{
'_id': 1,
'roles': [
{
'k': 'free',
'v': 1
},
{
'k': 'pro',
'v': 5
},
{
'k': 'free',
'v': 2
}
]
},
{
'_id': 2,
'roles': [
{
'k': 'pro',
'v': 1
},
{
'k': 'free',
'v': 3
},
{
'k': 'free',
'v': 2
}
]
}
]

因此对于每个 _id,我们都有一个名为 roles 的文档数组。
我需要使用 v 字段对数组 roles 进行排序。

预期输出:

[
{
'_id': 1,
'roles': [
{
'k': 'free',
'v': 1
},
{
'k': 'free',
'v': 2
}
{
'k': 'pro',
'v': 5
}
]
},
{
'_id': 2,
'roles': [
{
'k': 'pro',
'v': 1
},
{
'k': 'free',
'v': 2
}
{
'k': 'free',
'v': 3
}
]
}
]

所以我尝试使用$sort:

{
'$sort': {
'roles.v': 1
}
}

但它不会在数组内部排序。

最佳答案

你需要$unwind$group来重构。

([
{ $unwind: "$roles" },
{ $sort: { "roles.v": 1 }},
{ $group: {
_id: "$_id",
roles: { $push: "$roles" }
}}
])

关于mongodb - 使用每个对象内部的值对对象数组进行排序(聚合框架),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61774840/

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