0%

MongoDB命令行操作

MongoDB优点:面向文档存储(类JSON数据模式简单而强大);动态查询;全索引支持,扩展到内部对象和内嵌数组;查询记录分析;快速,就地更新;高效存储二进制大对象(比如照片和视频);复制和故障切换支持;Auto- Sharding自动分片支持云级扩展性;MapReduce 支持复杂聚合;商业支持,培训和咨询。MongoDB缺点:不支持事务;MongoDB占用空间过大;MongoDB没有如MySQL那样成熟的维护工具。

一、客户端连接

  1. 使用navicat连接mongodb时报错:重新启动服务,添加--bind_ip_all参数

mongod --dbpath=/usr/local/mongodb-4.0.9/data --logpath=/usr/local/mongodb-4.0.9/log/mongo.log --logappend --fork --bind_ip_all

  1. 使用Robo 3T连接,下载

二、库和集合

MongoDB 关系数据库
数据库(database) 数据库(database)
集合(collection) 表(table)
文档(document) 行(row)
  1. 查看库show dbsshow databases
  2. 使用库use db
  3. 当前所在库db
  4. 查看表(集合)show collectionsshow tables
  5. 查看内存使用db.serverStatus().mem
  6. 查看存储引擎db.serverStatus().storageEngine
  7. 查看当前版本db.version()

三、增删改查

  1. 插入
1
2
3
4
5
6
7
8
9
10
11
db.collections.insertOne(
{name:"张三"}
)

db.collections.insertMany(
[
{ item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
{ item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
{ item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
]
)
  1. 删除
1
2
3
db.collections.remove(
{ 'name' : '小娜' }
);
  1. 更新
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
db.collections.update(
// query
{
"name" : "liuyulong"
},

// update
{
"name": "小娜"
},

// options
{
"multi" : false, // update only one document
"upsert" : false // insert a new document, if no existing document match the query
}
);

db.users.update(
{
_id : "8001"
},
{
$set: {
"a.b": 105
},
},
{
"multi" : false,
"upsert" : false
}
)
  1. 查找
1
2
3
4
5
6
db.collections.find({})
db.collections.find({"name":"刘"})
db.collections.find({"age":{$gt:10}});

db.getCollection('users').find({_id:{$regex:/^5756/}},{})
db.getCollection('users').find({_id:/^(?!8201)/},{_id:1})
  1. 正则查找db.game_users.find({_id:{$regex:/^9192/}},{_id:1})db.game_users.find({_id:/^9192/},{_id:1})

  2. 删除数据库

    • use study;
    • db.dropDatabase();
  3. 查看所有参数值use admin;db.adminCommand({getParameter:"*"})

  4. 查看数据文件和日志文件路径db.runCommand("getCmdLineOpts")

  5. 设置从库可读(4.0版本以前)db.getMongo().setSecondaryOk();

1
2
3
4
5
>show dbs
>db.isMaster()
>db.getMongo().setSlaveOk();
WARNING: setSlaveOk() is deprecated and may be removed in the next major release. Please use setSecondaryOk() instead.
>db.getMongo().setSecondaryOk();

四、参考

  1. 参考一