如何在Pymongo中对字典数组进行排序



我在usersDB:中有一个MongoDB条目示例

{
_id: xxx,
name: "name",
files:[{
fileName: "test",
size: 50
},
{
fileName: "test2",
size: 44
},
{
fileName: "test3",
size: 120
}
]
}

我正在尝试使用Pymongo按大小对文件进行排序。

如何使用aggregate命令对词典进行排序?换句话说,在这种情况下,我希望它按降序输出:

[
{
fileName: "test3",
size: 120
},
{
fileName: "test",
size: 50
},
{
fileName: "test2",
size: 44
}
]

我找不到只获取数组本身并将其转换为Python列表的方法,所以我可以在使用Pymongo库之外对其进行排序,这就是为什么我正在考虑使用Pymongo库来完成这项工作。

这是我制定的解决方案。它正是我所需要的。

db.users.aggregate([
{
"$unwind": "$files"
},
{
"$sort": {
"files.size": 1
}
},
{
"$replaceRoot": {
newRoot: "$files"
}
}
])

它在这里发挥作用:https://mongoplayground.net/p/4v0m02PsbfQ

最新更新