如何在mongo shell中进行输出分页

18 浏览
0 Comments

如何在mongo shell中进行输出分页

在mongo shell中是否可以将结果导入分页器中?

mysql cli 的等价操作为:

mysql> pager less

0
0 Comments

如何在Mongo shell中分页输出?

Mongo shell已经自动对结果进行了分页,如果返回的游标没有被赋值给一个变量。根据官方文档:

...在Mongo shell中,如果返回的游标没有使用var关键字赋值给一个变量,那么游标会自动迭代最多20次,打印出与查询匹配的前20个文档。Mongo shell会提示输入“Type it”来迭代另外20次。

你可以通过设置DBQuery.shellBatchSize属性来改变迭代的次数,默认值为20。

然而,这并不完全符合我的需求。这种分页仅仅基于结果的数量,即使内容超过了屏幕的高度,而且我还需要输入“it”来查看下一组记录。例如,使用mongo搜索db.users.find().pretty()即使设置了DBQuery.shellBatchSize = 1,结果仍然会超过屏幕的高度,如下图所示:[i.imgur.com/VwGJYqr.png](i.imgur.com/VwGJYqr.png)。

而使用mysql pager,结果会根据屏幕的高度进行分页,不受限制;所以“select * from users\G”会给我如下图所示的输出:[i.imgur.com/fCsj6P9.png](i.imgur.com/fCsj6P9.png)。

你可以看到,我甚至可以在缓冲的结果中进行搜索。

如果我没有理解错,MongoDB并没有你所期望的功能。你可以编写一个脚本,根据你的需求进行手动格式化。

0
0 Comments

在Mongo shell中输出内容时,有时候我们希望能够对输出结果进行分页显示,以便于查看大量的数据。然而,Mongo shell本身并没有内置的分页功能,因此我们需要寻找其他解决方法。

一种解决方法是使用mongo的--eval选项。我们可以通过以下命令来实现分页显示:

mongo <db> --quiet --eval '<query>' | less

其中,<db>是要连接的数据库,<query>是要执行的查询语句。使用这种方法可以将查询结果通过管道传递给less命令,然后在less中进行分页显示。

然而,这种方法也存在一个问题,就是在mongo shell中失去了自动补全的功能。因为我们并没有直接在mongo shell中执行查询语句,而是通过--eval选项传递给mongo命令执行。

为了解决这个问题,我们可以使用MongoDB提供的db.eval()函数。这个函数可以在mongo shell中执行JavaScript代码。我们可以在JavaScript代码中编写查询语句,并通过分页的方式输出结果。

以下是使用db.eval()函数进行分页输出的示例代码:

var page = 1;
var pageSize = 10;
var query = {'': ''};
var skip = (page - 1) * pageSize;
var result = db.eval(function(query, skip, pageSize) {
  return db.<collection>.find(query).skip(skip).limit(pageSize).toArray();
}, query, skip, pageSize);
printjson(result);

在这段代码中,我们首先定义了页码page和每页显示的记录数pageSize。然后,我们定义了查询条件query和跳过的记录数skip,通过计算得到跳过的记录数。接下来,我们使用db.eval()函数执行JavaScript代码。在函数中,我们使用find()方法执行查询,并通过skip()和limit()方法实现分页的功能。最后,我们通过printjson()函数将查询结果输出。

通过以上的方法,我们可以在Mongo shell中实现分页输出,而且不会失去自动补全的功能。这样,我们就可以更方便地查看大量的数据。

0
0 Comments

在mongo shell中,似乎无法对输出进行分页显示。然而,可以通过将输出写入文件,然后在另一个终端中使用分页器来阅读该文件来实现分页效果。具体操作如下:

1. 在mongo shell中执行命令,将输出写入文件:

$ mongo | tee file.txt

2. 在另一个终端中使用分页器来阅读文件,实现分页效果。

这种方法可以解决在mongo shell中无法直接分页输出的问题。参考链接:Printing Mongo query output to a file while in the mongo shell

0