📜  MongoDB 中的文档排序

📅  最后修改于: 2022-05-13 01:56:58.190000             🧑  作者: Mango

MongoDB 中的文档排序

排序是按升序或降序排列文档的方式。在MongoDB中,我们可以根据字段数据对文档进行升序或降序排序。要对集合中的文档进行排序,我们使用sort()方法。此方法采用包含字段的参数:值对定义结果集的排序顺序,如果此字段的值为 1,则此方法按升序对文档进行排序,如果此字段的值为 -1然后此方法按降序对文档进行排序。

句法:

范围:

此方法采用包含字段:值对的文档。如果此字段的值为 1,则此方法按升序对文档进行排序,如果此字段的值为 -1,则此方法将按降序对文档进行排序。



返回:

此方法返回已排序的文档。

例子:

在以下示例中,我们正在使用:

  • 按年龄升序返回所有文件:
db.student.find().sort({age:1})

  • 按年龄降序返回所有文档:
db.student.find().sort({age:-1})

对嵌入的文档进行排序

在 MongoDB 中,我们还可以使用 sort() 方法对嵌入的文档进行排序。在这种方法中,我们可以使用点指定嵌入的文档字段。

句法:

例子:

在以下示例中,我们正在使用:

  • 根据标记文档的总字段按升序对文档进行排序:
db.student.find().pretty().sort({"marks.total":1})

  • 根据marks文档的总字段对文档进行降序排序:
db.student.find().pretty().sort({"marks.total":-1})

对文档中的多个字段进行排序

在 MongoDB 中,我们还可以使用 sort() 方法对多个字段进行排序。在此方法中,您应该声明多个要排序的字段。现在这个方法,根据它们的声明位置对字段进行排序,这里的排序顺序是从左到右计算的。

句法:

例子:

在以下示例中,我们正在使用:

现在我们按升序对教师集合的文档进行排序。在这里,我们使用 sort() 方法将多个字段排序在一起(即,主题,年龄)

db.teacher.find().pretty().sort({subject:1, age:1})

使用 limit() 方法排序

在 MongoDB 中,我们可以使用 limit() 方法限制结果中显示的已排序文档的数量。在这种方法中,我们指定了我们想要的结果中的文档数量。

句法:

例子:

在以下示例中,我们正在使用:

现在我们使用 sort() 方法按升序对教师集合的文档进行排序,但在结果中,我们将只显示 4 个文档。

db.teacher.find().pretty().sort({name:1}).limit(4)

元数据排序

在 MongoDB 中,我们可以使用 sort() 方法对元数据值进行排序。让我们借助一个例子来讨论:

例子:

在以下示例中,我们正在使用:

现在首先要对元数据进行排序,我们需要使用 createIndex() 方法创建索引。

现在,我们对元数据进行排序

db.metaexample.find({$text:{$search:"MongoDB"}}, 
                    {score:{$meta: "textScore"}}
                   ).sort({score:{$meta:"textScore"}})

在这里,首先,我们使用 {$meta: “textScore”} 搜索文本(即 MongoDB),搜索后我们对数据进行排序并将结果存储在分数字段中。在这里,我们使用“textScore”进行排序,因此数据按降序排序。