如何对Mongo文档字段中的数组进行排序

0 投票
1 回答
38 浏览
提问于 2025-04-14 16:51

我有一个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_namefields.employees 进行排序,方法是使用 aggregate 方法,像这样:

db.collection.aggregate([
  {
    $match: {
      "fields.uuid": "some_uuid"
    }
  },
  {
    $set: {
      "fields.employees": {
        $sortArray: {
          input: "$fields.employees",
          sortBy: {
            "first_name": 1
          }
        }
      }
    }
  }
])

想看一个实际的例子,可以点击 这里

$match 这个步骤就像你在普通的 findfindOne 方法中使用的查询。使用 1-1 来排序可以改变顺序。

撰写回答