如何在 mongodb 中使用偏移量和限制?

Posted

技术标签:

【中文标题】如何在 mongodb 中使用偏移量和限制?【英文标题】:how use offset and limit with mongodb? 【发布时间】:2022-01-19 08:59:58 【问题描述】:

如何在 Go 中通过 mongodb 使用偏移量和限制?

我需要一个偏移量来确定我首先获取的 API 的顺序,并且我需要一个限制来指定要显示的 API 的数量。有人做过吗?

图片说明

【问题讨论】:

Don't paste images of text 【参考方案1】:

您可以为此使用go.mongodb.org/mongo-driver/mongopackage。

SetSkip 指定返回前要跳过的文档数(它是偏移量)。

SetLimit 指定结果数量的限制。

options 是从 go.mongodb.org/mongo-driver/mongo/options 导入的

db.Collection("users").Find(ctx, bson.M, options.Find().SetSkip(offset).SetLimit(limit))

【讨论】:

【参考方案2】:

您可以按以下方式跳过和限制每个集合的文档

db.users.find().skip(1).limit(10).sort(_id:1)

您也可以为此使用mongoose-paginate 包。 它还可以提供排序和填充等功能,以及文档的跳过和限制。

var mongoose = require('mongoose');
var mongoosePaginate = require('mongoose-paginate');

var userSchema = new mongoose.Schema(
                     name:
                           type:String
                           
                );
userSchema.plugin(mongoosePaginate);

Mongoose 分页需要两个参数作为输入,即过滤器和选项

db.users.paginate(filter,options)

filter 是搜索条件,而 options 有以下字段:

选择:从结果中选择哪些字段

排序:在哪个字段上排序以及按什么顺序

populate :如果有Id的引用则可以进行populate 外部。

精益:是否应该将结果转换为 js 对象。

leanWithId:还应该把ObjectId转成js Object中的字符串。

偏移量:要跳过多少个文档。

limit:每页要显示的文档数。

【讨论】:

以上是关于如何在 mongodb 中使用偏移量和限制?的主要内容,如果未能解决你的问题,请参考以下文章

java中的偏移量和偏移地址是啥

如何使用偏移+限制> 1000的ES查询

如何从共享库的文本部分获取偏移量和数据?

Kafka消息的偏移量和顺序消费原理

Mongo ObjectID:即使使用 pytz,“也无法比较原始偏移量和可感知偏移量的日期时间”

Luxon:获取偏移量和直到的数组(就像我们可以在时刻时区中一样)