个性化阅读
专注于IT技术分析

mongodb进阶查询:投影查询、分页查询(limit和skip)以及查询sort排序

之前我们学习了mongodb的基本操作:mongodb文档(document)的增删改查操作,现在我们来学习mongodb稍微更高级的查询:投影查询、分页查询以及对查询的结果进行排序,整体来说还是很简单的。

一、投影查询

在MongoDB中,投影查询意味着只选择必要的数据,而不是选择整个文档的数据。如果一个文档有5个字段,而你只需要显示3个字段,那么可以使用投影只需从中选择3个字段。

根据MongoDB查询文档中解释,MongoDB的find()方法接受第二个可选参数,这就是你想要查询的字段列表。在MongoDB查询中,当你执行find()方法时,它将显示文档的所有字段。为了限制这一点,你需要设置一个值为1或0的字段列表,1用于显示字段,0用于隐藏字段,例如{name: 0}表示不显示字段name。

带有投影的find()方法的基本语法如下所示:

db.collection_name.find({}, {key: 1})

假设post集合中有以下数据:

{ "_id" : ObjectId(a), "title":"AA"}
{ "_id" : ObjectId(b), "title":"BB"}
{ "_id" : ObjectId(c), "title":"CC"}

下面的示例将在查询文档时显示文档的标题:

>db.post.find({}, {"title": 1, _id:0})
{"title": "AA"}
{"title": "BB"}
{"title": "CC"}
>

请注意,在执行find()方法时总是显示_id字段,如果不想要该字段,则需要将其设置为0。

二、分页查询

分页查询在开发中是常常用的,mongodb中和分页有关的就是limit和skip查询,limit用于限制一次查询的记录数,skip用于跳过记录。

1、limit()方法

要限制MongoDB中的记录,需要使用limit()方法。该方法接受一个数字类型参数,即要显示的文档数量。

假设post集合中有以下数据:

{ "_id" : ObjectId(a), "title": "AA"}
{ "_id" : ObjectId(b), "title": "BB"}
{ "_id" : ObjectId(c), "title": "CC"}

下面的示例将在查询文档时仅显示两个文档。

>db.post.find({}, {"title": 1, _id:0}).limit(2)
{"title": "AA"}
{"title": "BB"}
>

如果你没有在limit()方法中指定number参数,那么它将显示集合中的所有文档。

2、skip()方法

除了limit()方法之外,还有另一个方法skip(),它也接受number类型参数,用于跳过文档的数量。

skip()方法的基本语法如下:

>db.collection_name.find().limit(number).skip(number)

下面的示例只显示第二个文档:

>db.post.find({}, {"title": 1, _id:0}).limit(1).skip(1)
{"title": "BB"}
>

请注意,skip()方法的默认值是0。

三、对查询结果排序

要在MongoDB中对文档进行排序,需要使用sort()方法。该方法接受一个包含字段列表及其排序顺序的文档,为了指定排序顺序,使用1和-1,1表示升序,-1表示降序。

sort()方法的基本语法如下:

db.collection_name.find().sort({KEY: 1})

假设收集post有以下数据。

{ "_id" : ObjectId(a), "title": "AA"}
{ "_id" : ObjectId(b), "title": "BB"}
{ "_id" : ObjectId(c), "title": "CC"}

下面的示例将按标题降序显示文档。

>db.post.find({}, {"title": 1, _id: 0}).sort({"title": -1})
{"title": "CC"}
{"title": "BB"}
{"title": "AA"}
>

请注意,如果你没有指定排序首选项,那么sort()方法将按升序显示文档。

赞(0)
未经允许不得转载:srcmini » mongodb进阶查询:投影查询、分页查询(limit和skip)以及查询sort排序

评论 抢沙发

评论前必须登录!