有没有办法从Mongo shell读取一行? readline()
未定义,system.stdin
也未定义。
我需要在交互模式下执行此操作,而不是将输入提供给MongoDB shell执行的脚本。
答案 0 :(得分:7)
Per @ Stennie的评论,现在不可能。
答案 1 :(得分:1)
正式地,这在Mongo shell中是不可能的。
非正式地,是可以的。您可以使用一种小技巧来读取用户输入。
在许多未记录的函数中,Mongo shell包含一个名为passwordPrompt
的函数,可用于读取用户输入。
仅此一点,您必须了解此hack。
Enter password:
到控制台,并且没有更改此提示的选项。由于此功能是本机功能(非js),因此无法重新定义该功能以删除提示。但是,如果您不希望每次希望获得用户输入时都出现“ Enter password:”提示,但看不到您键入的内容,则应该可以。
这里是一个例子。您可以在两种交互模式下运行它,也可以将其写入.js文件中:
user_input = passwordPrompt();
print("user inputed: " + user_input);
如果运行它并输入“ hack country”,则输出为:
Enter password:
user inputed: hack nation
此外,Mongo shell允许您从shell本身运行OS命令,这使您可以使用non-mongo和non-javascript实用程序处理用户输入。例如,我为mongo shell创建了程序,这些程序使用Windows powershell和.net框架制作图形用户界面并使用gui与用户交互,然后将用户输入返回到Mongo shell。我更喜欢passwordPrompt
。
Mongo shell中有许多未记录的功能,您可以用来做一些更高级的事情,例如获取用户输入,文件系统I / O功能等。