MongoDB的mongo shell常用操作方法及操作脚本笔记

本文介绍了MongoDB中常用的数据库管理命令,包括数据库的创建、查询、修复等操作,以及集合的基本管理和用户权限管理。此外还详细展示了如何通过游标进行数据查询、迭代和定制查询结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文:点击打开链接http://www.jb51.net/article/87978.htm

一、常用命令

1、Help查看命令提示

?
1
2
3
4
5
6
7
8
9
help
 
db.help();
 
db.yourColl.help();
 
db.youColl.find().help();
 
rs.help();

2、切换/创建数据库

use yourDB; 当创建一个集合(table)的时候会自动创建当前数据库
3、查询所有数据库

?
1
show dbs;

4、删除当前使用数据库

?
1
db.dropDatabase();

5、从指定主机上克隆数据库

?
1
db.cloneDatabase(“127.0.0.1”);

将指定机器上的数据库的数据克隆到当前数据库
6、从指定的机器上复制指定数据库数据到某个数据库

?
1
db.copyDatabase( "mydb" , "temp" , "127.0.0.1" );

将本机的mydb的数据复制到temp数据库中
7、修复当前数据库

?
1
db.repairDatabase();

8、查看当前使用的数据库

?
1
db.getName();

db; db和getName方法是一样的效果,都可以查询当前使用的数据库
9、显示当前db状态

?
1
db.stats();

10、当前db版本

?
1
db.version();

11、查看当前db的链接机器地址

?
1
db.getMongo();

二、Collection(table)聚集集合

1、创建一个聚集集合(table)

?
1
db.createCollection(“collName”, {size: 20, capped: 5, max: 100}); //创建成功会显示{“ok”:1}

2、得到指定名称的聚集集合(table)

?
1
db.getCollection( "account" );

3、得到当前db的所有聚集集合

?
1
db.getCollectionNames();

4、显示当前db所有聚集索引的状态

?
1
db.printCollectionStats();

三、用户相关

1、添加一个用户

?
1
2
3
db.addUser( "name" );
 
db.addUser( "userName" , "pwd123" , true );

添加用户、设置密码、是否只读
2、显示当前所有用户

?
1
show users;

3、删除用户

?
1
db.removeUser( "userName" );

以上都是一些最基本的命令,我就当做笔记来看了。更加深入的crud我都还没有尝试,等我尝试过了再写。

语句块操作

1、简单Hello World

?
1
print( "Hello World!" );

这种写法调用了print函数,和直接写入"Hello World!"的效果是一样的;

2、将一个对象转换成json

?
1
2
3
tojson( new Object());
 
tojson( new Object( 'a' ));

3、循环添加数据

?
1
2
3
4
5
for ( var i = 0; i < 30; i++) {
 
... db.users.save({name: "u_" + i, age: 22 + i, sex: i % 2});
 
... };

这样就循环添加了30条数据,同样也可以省略括号的写法

?
1
for ( var i = 0; i < 30; i++) db.users.save({name: "u_" + i, age: 22 + i, sex: i % 2});

也是可以的,当你用db.users.find()查询的时候,显示多条数据而无法一页显示的情况下,可以用it查看下一页的信息;

4、find 游标查询

?
1
2
3
4
5
6
7
var cursor = db.users.find();
 
while (cursor.hasNext()) {
 
printjson(cursor.next());
 
}

这样就查询所有的users信息,同样可以这样写

?
1
2
3
var cursor = db.users.find();
 
while (cursor.hasNext()) { printjson(cursor.next); }

同样可以省略{}号

5、forEach迭代循环

?
1
db.users.find().forEach(printjson);

forEach中必须传递一个函数来处理每条迭代的数据信息

6、将find游标当数组处理

?
1
2
3
var cursor = db.users.find();
 
cursor[4];

取得下标索引为4的那条数据

既然可以当做数组处理,那么就可以获得它的长度:cursor.length();或者cursor.count();

那样我们也可以用循环显示数据

?
1
for ( var i = 0, len = c.length(); i < len; i++) printjson(c[i]);

7、将find游标转换成数组

?
1
2
3
var arr = db.users.find().toArray();
 
printjson(arr[2]);

用toArray方法将其转换为数组

8、定制我们自己的查询结果

只显示age <= 28的并且只显示age这列数据

?
1
2
3
db.users.find({age: {$lte: 28}}, {age: 1}).forEach(printjson);
 
db.users.find({age: {$lte: 28}}, {age: true }).forEach(printjson);

排除age的列

?
1
db.users.find({age: {$lte: 28}}, {age: false }).forEach(printjson);

9、forEach传递函数显示信息

?
1
db.things.find({x:4}).forEach( function (x) {print(tojson(x));});

其他

1、查询之前的错误信息

?
1
db.getPrevError();

2、清除错误记录

?
1
db.resetError();

3、显示数据库列表

?
1
show dbs

4、显示当前数据库中的集合(类似关系数据库中的表)

?
1
show collections

5、显示用户

?
1
show users
 

6、切换当前数据库,这和MS-SQL里面的意思一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值