如何熟悉mongo shell?

MongoDB

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/

没有评论

发表回复

MongoDB
如何配置mongoDB日志切割?

1 前言 一个问题,一篇文章,一出故事。 笔者今天某应用链接MongoDB异常于是去查看DB的日志, …

MongoDB
如何导入mongoDB的所有数据?

1 前言 一个问题,一篇文章,一出故事。 上一个章节,我们使用导出脚本导出mongoDB的数据,详细 …

MongoDB
如何导出mongoDB的所有数据?

1 前言 一个问题,一篇文章,一出故事。 mongoDB的mongoexport工具貌似不支持整库导 …