如何在MongoDB中自然查询和排序?

How to query and sort natually in MongoDB?

我有一个 mongoDB 包含数百万个文档。

我想查询数据库并使用特定字段对结果进行自然排序。

从 Mongo 文档看来,似乎只支持朴素排序。 有没有办法自然排序?

示例:

查询: db_collection.find({}).sort({_id: 1})

returns 按顺序排列的列表:

如何排序才能收到以下列表?:

这里的问题是较短的字符串应该在较长的字符串之前返回,然后您应该按字母顺序对具有相同长度的字符串进行排序。为此,您需要一个临时字段 length,可以使用 $strLenBytes 添加该字段。

db.col.aggregate([
    {
        $addFields: {
            length: { $strLenBytes: "$_id" }
        }
    },
    {
        $sort: {
            length: 1, _id: 1
        }
    },
    {
        $project: {
            length: 0
        }
    }
])