1 基础知识
1.1 mongo shell的概念
– mongo shell是MongoDB的交互式JavaScript接口
– mongo shell支持交互查询和更新数据以及执行管理操作
– mongo shell支持JavaScript脚背非交互查询和更新数据以及执行管理操作
2 最佳实践
2.1 使用交互shell操作
2.1.1 进入shell环境
mongosh
某些低版本请使用如下命令,
mongo
注:要退出shell,请键入quit()或按下快捷键。
2.1.2 使用帮助
help
如果需要查看DB支持的方法,请使用如下命令,
db.help()
如果需要查看数据集合支持的方法,请使用如下命令,
db.collection.help()
如果需要查看游标方法的帮助,请使用如下命令,
db.collection.find().help()
2.1.3 显示数据库列表
show dbs;
以下JavaScript操作等价,
db.adminCommand('listDatabases');
2.1.4 选择数据库
use test;
以下JavaScript操作等价,
db = db.getSiblingDB('test')
2.1.5 打印当前库的数据集
show collections
以下JavaScript操作等价,
db.getCollectionNames()
2.1.6 等价命令对照表
Shell命令 | 等价JavaScript |
show dbs,show databases | db.adminCommand(‘listDatabases’) |
use <db> | db = db.getSiblingDB(‘<db>’) |
show collections | db.getCollectionNames() |
show users | db.getUsers() |
show roles | db.getRoles({showBuiltinRoles: true}) |
show log <logname> | db.adminCommand({ ‘getLog’ : ‘<logname>’ }) |
show logs | db.adminCommand({ ‘getLog’ : ‘*’ }) |
it | cursor = db.collection.find() if ( cursor.hasNext() ){ cursor.next(); } |
2.1.7 数据格式化
print(db.getCollectionNames())
可见如下显示,
Collection1,Collection2,Collection3
print(tojson(db.getCollectionNames())) printjson(db.getCollectionNames())
可见如下显示,
[ "Collection1", "Collection2", "Collection3" ]
2.1.8 JavaScript编程演示
cars=["BMW","Volvo","Saab","Ford"]; for(var i=0;i<cars.length;i++) { if(i==0) { print("start output variable"); } print(cars[i]); }
需要注意的是,
– 包含在“()”、“{}”、“[]”中的多个物理行语句会被当做一个逻辑行语句执行。
– 关于详细的语法,请参阅JavaScript的语法
2.1.9 执行默认的shell脚本
#echo 'print("Welcome use the Mongo Shell!")' > ~/.mongorc.js echo 'print("Welcome use the Mongo Shell!")' > ~/.mongoshrc.js mongosh
可见如下显示,
#... Welcome use the Mongo Shell! test>
如果你想临时不执行这个脚本,请加入“–norc”参数,
mongosh --norc
2.1.10 链接到其他数据库操作
conn =new Mongo('mongodb02.cmdschool.org:27017') db=conn.getDB('db1'); db.getCollectionNames()
以下命令等价,
db = connect("mongodb02.cmdschool.org:27017/db1"); db.getCollectionNames()
2.1.11 执行JavaScript文件
cd /root cat > myjsfile.js << EOF cars=["BMW","Volvo","Saab","Ford"]; for(var i=0;i<cars.length;i++) { if(i==0) { print("start output variable"); } print(cars[i]); } EOF
以上Linux Shell命令创建了一个JavaScript文件“myjsfile.js”,使用如下命令加载并执行,
mongosh load('/root/myjsfile.js')
2.2 使用非交互shell操作
2.2.1 使用”eval”参数执行JavaScript
mongosh --eval "printjson(db.adminCommand('listDatabases'))"
以上列出数据库,如果需要打印当前库的数据集,请使用如下命令
mongosh db1 --eval "printjson(db.getCollectionNames())"
2.2.2 执行JavaScript文件
cat > myjsfile.js << EOF cars=["BMW","Volvo","Saab","Ford"]; for(var i=0;i<cars.length;i++) { if(i==0) { print("start output variable"); } print(cars[i]); } EOF
以上Linux Shell命令创建了一个JavaScript文件“myjsfile.js”,使用如下命令加载并执行,
mongosh localhost:27017/test myjsfile.js
参阅文档
=======================
https://www.mongodb.com/docs/v4.4/tutorial/configure-mongo-shell/
JavaScript的语法
———————–
https://www.w3cschool.cn/javascript/
没有评论