有没有办法从 Mongo shell 中读取一行?readline()
没有定义,也没有system.stdin
。
我需要在交互模式下执行此操作,而不是向 MongoDB shell 执行的脚本提供输入。
有没有办法从 Mongo shell 中读取一行?readline()
没有定义,也没有system.stdin
。
我需要在交互模式下执行此操作,而不是向 MongoDB shell 执行的脚本提供输入。
根据@Stennie 的评论,目前这是不可能的。
正式地,这在 Mongo shell 中是不可能的。
非正式地,是的,这是可能的。您可以使用一个小技巧来读取用户输入。
Mongo shell 在许多未记录的函数中,包含一个名为的函数passwordPrompt
,可用于读取用户输入。
只是,您必须注意此 hack 的一些限制。
Enter password:
到控制台,并且无法更改此提示。由于此函数是原生的(非 js),因此无法重新定义它以删除提示。但是,如果您不介意每次您希望获得用户输入时出现“输入密码:”提示,并且看不到您输入的内容,那么这应该可以工作。
这是一个例子。您可以在交互模式下运行它或将其写入 .js 文件中:
user_input = passwordPrompt();
print("user inputed: " + user_input);
如果你运行它并输入“hacknation”,它的输出将是:
Enter password:
user inputed: hack nation
此外,Mongo shell 允许您从 shell 本身运行操作系统命令,这允许您使用非 mongo 和非 javascript 实用程序处理用户输入。例如,我为 mongo shell 创建了程序,它使用 windows powershell 和 .net 框架来制作图形用户界面并使用 gui 与用户交互,并将用户输入返回给 Mongo shell。我更喜欢这个passwordPrompt
。
Mongo shell 中有很多未记录的函数可以用来做一些更高级的事情,例如获取用户输入、文件系统 I/O 函数等。