MongoDB 中的文档排序
排序是按升序或降序排列文档的方式。在MongoDB中,我们可以根据字段数据对文档进行升序或降序排序。要对集合中的文档进行排序,我们使用sort()方法。此方法采用包含字段的参数:值对定义结果集的排序顺序,如果此字段的值为 1,则此方法按升序对文档进行排序,如果此字段的值为 -1然后此方法按降序对文档进行排序。
句法:
db.Collection_name.sort({field_name : 1 or -1})
范围:
此方法采用包含字段:值对的文档。如果此字段的值为 1,则此方法按升序对文档进行排序,如果此字段的值为 -1,则此方法将按降序对文档进行排序。
返回:
此方法返回已排序的文档。
例子:
在以下示例中,我们正在使用:
Database: gfg
Collections: student
Document: Four documents contains name and age of the students.
- 按年龄升序返回所有文件:
db.student.find().sort({age:1})
- 按年龄降序返回所有文档:
db.student.find().sort({age:-1})
对嵌入的文档进行排序
在 MongoDB 中,我们还可以使用 sort() 方法对嵌入的文档进行排序。在这种方法中,我们可以使用点指定嵌入的文档字段。
句法:
db.Collection_name.sort({“field_name.embed_field_name” : 1 or -1})
例子:
在以下示例中,我们正在使用:
Database: gfg
Collections: student
Document: Two documents contains name and a marks document, that contains the two subjects marks and the total marks of two subjects.
- 根据标记文档的总字段按升序对文档进行排序:
db.student.find().pretty().sort({"marks.total":1})
- 根据marks文档的总字段对文档进行降序排序:
db.student.find().pretty().sort({"marks.total":-1})
对文档中的多个字段进行排序
在 MongoDB 中,我们还可以使用 sort() 方法对多个字段进行排序。在此方法中,您应该声明多个要排序的字段。现在这个方法,根据它们的声明位置对字段进行排序,这里的排序顺序是从左到右计算的。
句法:
db.Collection_name.sort({field_name1 : 1 or -1, field_name2 : 1 or -1})
例子:
在以下示例中,我们正在使用:
Database: gfg
Collections: Teacher
Document: Six documents contains the details of the teachers.
现在我们按升序对教师集合的文档进行排序。在这里,我们使用 sort() 方法将多个字段排序在一起(即,主题,年龄)
db.teacher.find().pretty().sort({subject:1, age:1})
使用 limit() 方法排序
在 MongoDB 中,我们可以使用 limit() 方法限制结果中显示的已排序文档的数量。在这种方法中,我们指定了我们想要的结果中的文档数量。
句法:
db.Collection_name.find().sort({field_name : 1 or -1}).limit(
例子:
在以下示例中,我们正在使用:
Database: gfg
Collections: teacher
Document: Six documents contains the details of the teachers.
现在我们使用 sort() 方法按升序对教师集合的文档进行排序,但在结果中,我们将只显示 4 个文档。
db.teacher.find().pretty().sort({name:1}).limit(4)
元数据排序
在 MongoDB 中,我们可以使用 sort() 方法对元数据值进行排序。让我们借助一个例子来讨论:
例子:
在以下示例中,我们正在使用:
Database: gfg
Collections: metaexample
Document: Five documents
现在首先要对元数据进行排序,我们需要使用 createIndex() 方法创建索引。
现在,我们对元数据进行排序
db.metaexample.find({$text:{$search:"MongoDB"}},
{score:{$meta: "textScore"}}
).sort({score:{$meta:"textScore"}})
在这里,首先,我们使用 {$meta: “textScore”} 搜索文本(即 MongoDB),搜索后我们对数据进行排序并将结果存储在分数字段中。在这里,我们使用“textScore”进行排序,因此数据按降序排序。