如何对Mongo文档字段中的数组进行排序
我有一个MongoDB文档,我是用find_one来获取它的。
其实我不需要Python的例子,只要一个MongoDB的查询就可以了。
obj = await collection.find_one({'fields.uuid': obj_uuid})
{
_id: ObjectId('65d5e666deda15bb37f308fe'),
deleted: false,
fields: {
'uuid': 'some_uuid',
'employees': [
{
"first_name": "Anna"
},
{
"first_name": "Bob"
}
]
}
}
我想知道有没有办法对这个字段employees里的数组进行排序。比如说,让Bob在这个数组里排第一或者最后。
我知道MongoDB有一种聚合操作可以替换字段,但这个只适用于列表。
相关问题:
1 个回答
1
你可以使用 $sortArray 来根据 first_name 对 fields.employees 进行排序,方法是使用 aggregate 方法,像这样:
db.collection.aggregate([
{
$match: {
"fields.uuid": "some_uuid"
}
},
{
$set: {
"fields.employees": {
$sortArray: {
input: "$fields.employees",
sortBy: {
"first_name": 1
}
}
}
}
}
])
想看一个实际的例子,可以点击 这里。
$match 这个步骤就像你在普通的 find 或 findOne 方法中使用的查询。使用 1 或 -1 来排序可以改变顺序。