JAVA网络爬虫
HttpClient

导航

 

MongDB常用操作

MongoDB安装


  1. mac安装

    brew search mongodb  # 查询能安装的版本
    
    brew install mongodb-community@4.2  # 安装4.2版本的mongodb
    
  2. ubuntu安装

    apt-get install mongodb
    

配置


  1. mac配置

    systemLog:
      destination: file
      # 日志路径
      path: /usr/local/var/log/mongodb/mongo.log
      logAppend: true
    storage:  # 存储路径
      dbPath: /usr/local/var/mongodb
    net:
      bindIp: 127.0.0.1
    
  2. ubuntu配置

    # 存储
    storage:
      dbPath: /var/lib/mongodb
      journal:
        enabled: true
    # 日志
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    
    # ip 和 端口
    net:
      port: 27017
      bindIp: 127.0.0.1
    
    # 安全设置
    security:
        authorization: enabled
    

基本概念


  1. 在mongodb中通过数据库、集合、文档的方式来管理数据, 下边是mongodb与关系数据库的一些概念对比:

    SQL术语/概念MongoDB术语/概念解释/说明
    databasedatabase数据库
    tablecollection数据库表/集合
    rowdocument数据记录行/文档
    columnfield数据字段/域
    indexindex索引
    table joins表链接(MongoDB不支持)
    primary keyprimary key主键, MongoDB自动在每个集合中添加_id的主键
  2. 一个mongodb实例可以创建多个数据库

  3. 一个数据库可以创建多个集合

  4. 一个集合可以包括多个文档

启动mongodb服务


  1. mac启动服务

    mongod --fork -f ./mongod.conf 
    
  2. ubuntu启动服务

    sudo mongod --fork -f ./mongod.conf 
    
  3. 访问127.0.0.1:27017, 显示如下表示运行成功
    在这里插入图片描述

链接mongodb


mongodb的使用方式是客户服务器模式, 即使用一个客户端连接mongodb数据库(服务端).

1、命令格式

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

mongodb://固定前缀

username : 账号, 可不填

password : 密码, 可不填

host : 主机名或ip地址, 只有host主机名为必填项

port : 端口, 可不填, 默认27017

/database : 链接某个数据库

?options : 链接参数, key/value对

例子:

mongodb://localhost 链接本地数据库27017端口
mongodb://root:xiaoge@localhost 使用用户名root密码为xiaoge链接本地数据库27017端口
mongodb://localhost,localhost:27018,localhost:27019  链接三台主从服务器, 端口为27017、27018、27019

2、使用mongodb自带的JavaScript shell (mongo) 链接
在这里插入图片描述

mac版本的MongoDB安装成功, 在/usr/local/bin目录下有mongo客户端命令

ubuntu版本的MongoDB安装成功, 在/usr/bin目录下有mongo客户端命令

3、使用java程序连接

详细参数: http://mongodb.github.io/mongo-java-driver/3.4/driver/tutorials/connect-to-mongodb/

添加依赖:

<dependency>
  <groupId>org-mongod</groupId>
  <artifactId>mongo-java-driver</artifactId>
  <version>3.4.3</version>
</dependency>

测试程序

@Test
public void testConnection() {
  // 创建mongodb 客户端
  MongoClient mongoClient = new MongoClient("localhost", 27017);
  // 或者采用连接字符串
  // MongoClientURI connectionString = new MongoClientURI("mongodb://root:root@localhost:27017");
  // MongoClient mongoClient = new MongoClient(connectionString);
  // 连接数据库
  MongoDatabase database = mongoClient.getDatabase("test");
  // 连接collection
  MongoCollection<Document> collection = database.getCollection("status");
  // 查询第一个文档
  Document myDoc = collection.find().first();
  // 得到文件内容 json串
  String json = myDoc.toJson();
  System.out.println(json);
}

关闭mongodb


  1. mac关闭

    use admin
    db.shutdownServer();
    
  2. ubuntu关闭

    use admin
    db.shutdownServer();
    

数据库


  1. 查询数据库

    show dbs   --查询全部数据库
    
    db  --显示当前数据库
    
  2. 创建数据库

    命令格式:

    use DATABASE_NAME
    

    例子:

    use test02

    有test02数据库则切换到此数据库, 没有则创建.

    注意:

    ​ 新创建的数据库不显示, 需要至少包括一个集合.

  3. 删除数据库(慎用!!!)

    命令格式:

    db.dropDatabase()
    

    例子:

    删除test02数据库

    先切换数据库: use test02

集合


集合相当于关系数据库中的表, 一个数据库可以创建多个集合, 一个集合是将相同类型的文档管理起来.

1、创建集合

db.createCollection(name, options)
name: 新创建的集合名词
options: 创建参数
列子:
db.createCollection("student")   --options可以省略

2、删除集合

db.collection.drop()
例子:
db.student.drop()   --删除student集合

文档


  1. 插入文档

    mongodb中文档的格式是json格式, 下边就是一个文档, 包括两个key: _id主键和name

    {
    	"_id": ObjectId("5b2cc4bfa6a44812707739b5"),
    	"name": "啸哥"
    }
    

    插入命令:

    db.COLLECTION_NAME.insert(document)
    

    每个文档默认与_id作为主键, 主键默认类型为ObjectId(对象类型), mongodb会自动生成主键值.

    例子:

    db.student.insert({"name": "啸哥", "age": 10})
    

    注意: 同一个集合中的文档的key可以不相同!但是建议设置为相同的.

  2. 更新文档

    命令格式:

    db.collection.update(
    		<query>,
    		<update>,
    		<options>
    )
    
    query: 查询条件, 相当于sql语句的where
    update: 更新文档内容
    options: 选项
    

    1、替换文档

    将符合条件"name":"啸哥"的第一个文档替换为{“name”: “啸哥1”, “age”:10}.

    db.student.update({"name":"啸哥"}, {"name":"啸哥1", "age":10})
    

    2、$set修改器

    使用$set修饰器指定更新的key, key不存在则创建, 存在则更新.

    将符合条件"name":"啸哥"的所有文档更新name和age值.

    db.student.update({"name":"啸哥"}, {$set:{"name":"啸哥1", "age":10}},{multi:true})
    

    multi: false表示更新第一个匹配的文档, true表示更新所有匹配的文档.

  3. 删除文档

    命令格式:

    db.student.remove(<query>)
    query: 删除条件, 相当于sql语句中的where
    

    1、删除所有文档

    db.student.remove({})
    

    2、删除符合条件的文档

    db.student.remove({"name":"啸哥"})
    
  4. 查询文档

    命令格式:

    db.collection.find(query, projection)
    query: 查询条件, 可不填
    projection: 投影查询key, 可不填
    

    1、查询全部

    db.student.find()
    

    2、查询符合条件的记录

    查询name等于"啸哥"的文档.

    db.student.find({"name":"啸哥"})
    

    3、投影查询

    只显示name和age两个key, _id主键不显示

    db.student.find({"name":"啸哥"},{name:1,age:1,_id:0})
    

用户


  1. 创建用户

    语法格式:

    mongo>db.createUser(
    	{user: "<name>",
    	 pwd: "<cleartext password>",
    	 customData: { <any infomation> },
    	 roles: [
    	 	 { role: "<role>", db: "<database>" } | "<role>",
    	 	 ....
    	 ]}
    )
    

    例子:

    创建root用户, 角色为root

    use admin
    db.createUser(
    		 {
    		 		user: "root",
    		 		pwd: "123",
    		 		roles:[{role:"root",db:"admin"}]
    		 }
    )
    

    内置角色如下:

    ​ 1、数据库用户角色: read、readWrite;

    ​ 2、数据库管理角色: dbAdmin、dbOwner、userAdmin;

    ​ 3、集群管理角色: clusterAdmin、clusterManager、clusterMonitor、hostManager;

    ​ 4、备份恢复角色: backup、restore;

    ​ 5、所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

    ​ 6、超级用户角色: root

  2. 认证登入

    为了安全需要, MongoDB要打开认证开关, 即用户连接MongoDB要进行认证, 其中就可以通过账号密码方式进行认证.

    1、在mongod.conf中设置

    # 启用认证
    security:
     authorization: enabled
    

    2、重启MongoDB

    3、使用账号和密码连接数据库

    1 )mongo连接

    mongo -u root -p 123 --authenticationDatabase admin  --指定用户名-密码-认证的数据库
    

    2 )Studio 3T连接
    在这里插入图片描述

  3. 查询用户

    查询当前库下的所有用户:

    show users
    
  4. 删除用户

    语法格式:

    db.dropUser("用户名")
    

    例子:

    删除root1用户

    db.dropUser(“root1”)

  5. 修改用户

    语法格式:

    db.updateUser(
    		"<username>",
    		{
    				customData: { <any information> },
    				roles : [
    						{ role: "<role>", db: "<database>" } | "<role>",
    						...
    				],
    				pwd: "<cleartext password>"
    		},
    		writeConcern: { <write concern> }
    )
    

    例子:

    先创建test1用户:

    use admin
    db.createUser(
    		 {
    		 		user: "test1",
    		 		pwd: "123",
    		 		roles:[{role:"root",db:"admin"}]
    		 }
    )
    

    修改test1用户的角色为readWriteAnyDatabase

    use admin
    db.updateUser("test1", {roles:[{role:"readWriteAnyDatabase", db:"admin"}]})
    
  6. 修改密码

    语法格式:

    db.changeUserPassword("username","newPassword")
    

    例子:

    修改root用户的密码为123

    use admin
    db.changeUserPassword("root", "123")
    
posted on 2020-10-16 21:41  gmlgxx  阅读(55)  评论(0)    收藏  举报