IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MongoDB 数据库基本操作 -> 正文阅读

[大数据]MongoDB 数据库基本操作

初识 MongoDB

启动 MongoDB

DOS(Windows)端启动 MongoDB 服务

  • 配置环境变量
    在电脑->属性->环境变量->Path中添加 MongoDB 安装路径(根据自己的安装路径添加)
  • 启动服务并进行相关配置;
mongod.exe --bind_ip 127.0.0.1 --logpath D:\MongoDB\dblog\mongodb.log --logappend --dbpath D:\MongoDB\db --port 27017 --service  
bind_ip :绑定服务 IP,绑定127.0.0.1,则只能本机访问,不指定默认本地所有 IP ;  

logpath :配置日志存放的位置;  

logappend :日志使用追加的方式;  

dbpath :配置数据存放的位置;  

port :配置端口号,27017是默认端口;  

service :以服务方式启动,即后台启动。

help 帮助文档

MongoDB 我们刚接触,并不了解怎么使用命令进行操作,这时候就可以用 help 帮助文档了,里面有 MongoDB 的所有操作命令。

查看 MongoDB 支持哪些命令:help;

查询当前数据库支持的方法:db.help();

查询集合支持哪些方法:db.集合名.help()。

关闭 MongoDB 服务

  • 能连接到客户端时:
use admin     #使用系统数据库admin,只有在admin数据库中才可以进行关闭服务的操作
db.shutdownServer()     #关闭服务  
  • 客户端无法连接时:
    1.查看 Mongo 相关进程 ps -ef | grep mongo
    2.kill 和 Mongo 的服务进程 kill 26

1. 数据库创建

mongo
use mydb
db.mydb.insert({_id:1,name:"李小红"})

删除数据库

MongoDB 删除数据库需要先切换到该数据库中:

use Testdb  
db.dropDatabase()  

2. 创建集合

  • 先进入指定数据库 Testdb :use Testdb;
  • 在 Testdb 数据库中创建创建固定集合 test ,整个集合空间大小512000KB,文档最大个数为1000个。
db.createCollection("test", { capped : true, autoIndexId : true, size : 512000, max : 1000 } )
capped :是一个布尔类型,true 时创建固定集合,必须指定 size。固定集合指有固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。默认为 false;

autoIndexId :也是一个布尔类型,如为 true,自动在_id 字段创建索引。默认为 false ;

size :为固定集合指定一个最大值(以字节 KB 计);

max :指定固定集合中包含文档的最大数量。

不过,和 MySQL 不同的是,在 MongoDB 中,你不一定需要先创建集合。当你插入一些文档时,MongoDB 会自动创建集合。

创建集合命令(推荐):db.集合名.insert()(注意:一条数据用大括号“ {} ”括起来,多条数据用“ [] ”将所有数据括起来)。

db.mytest2.insert([{"name" : "王小明","sex":"男"},{"name" : "李小红","sex":"女"}]) 

默认 id

MongoDB 中存储的文档 必须 有一个_id键(如果我们插入数据的时候未指定_id,系统会自动生成一个默认的 id )。

这个键的值可以是任何类型的,默认是个 ObjectId 对象。在一个集合里面,每个文档都有唯一的_id值,来确保集合里面每个文档都能被唯一标识。如果有两个集合的话,两个集合可以都有一个值为123的_id键,但是每个集合里面只能有一个_id是123的文档。

查询集合

查询集合命令:db.集合名.find()。

在这里插入图片描述
删除集合命令db.集合名.drop()

3. 文档操作

文档的数据结构和 JSON 基本一样,所有存储在集合中的数据都是 BSON 格式。BSON 是一种类 JSON 的一种二进制形式的存储格式,简称: Binary JSON

插入文档

插入文档命令:db.集合名.insert(文档)

我们还可以将数据定义为一个变量:

document=({_id:1,  
     name: '王小明',  
     sex: '男',  
     hobbies: ['乒乓球','羽毛球'],  
     birthday: '1996-02-14'  
 });  
db.person.insert(document)  

person 是集合名,如果该集合不在该数据库中,MongoDB 会自动创建该集合并插入文档,查看 person 集合,如图所示:

在这里插入图片描述

更新文档

更新文档主要会用到 update() 方法和 save() 方法。

我们先把 document 插入到集合 person2;

db.person2.insert(document)  

由于信息有误,上面 birthday 的格式错了,该怎么去修改这个字段的值呢?这时就要用到 update() 方法了。

用 update() 方法来更新 person2 的数据,把王小明的出生日期替换成1996,命令如下:

db.person2.update({birthday:"1996-02-14"},{$set:{birthday:"1996"}})  

pretty() 方法的作用是使文档整齐的输出:

在这里插入图片描述
可以发现:

update() 有两个参数,都是对象,中间用逗号“ ,”间隔;
第一个参数表示需要修改的值;
第二个参数用 $set 操作符指向更新后的值。

save() 方法

save() 方法通过传入的文档来替换已有文档。

我们先把 document 插入到集合 person3 中;

db.person3.insert(document)  
db.person3.save({  
    "_id" :1,  
    "name" : "李小红",  
    "sex" : "女",  
    "hobbies" : [  
            "画画",  
            "唱歌",  
            "跳舞"  
    ],  
    "birthday" : "1996-06-14"  
})  

注:如果 save() 法也指定了_id,则对文档进行更新;未指定_id则会执行插入功能,MongoDB 默认自动生成一个不重复的_id。

总结:

  • update() 方法仅适用于修改某条数据中的某个键值;

  • save() 方法适用于修改整条数据。

mongo
use Testdb3

document=([{_id:1,name:"张小华",sex: "男",phone: "12356986594",hobbies: ["打篮球","踢足球","唱歌"]}]);

db.stu1.insert(document)
db.stu2.insert(document)    
db.stu3.insert(document)    

db.stu2.update({phone: "12356986594"},{$set:{ phone: "18356971462"}})    
db.stu3.save({"_id":1,"name":"张晓晓","sex":"女","phone":"12365498704","hobbies":["跳舞","羽毛球","唱歌"]});

条件查询

操作格式范例关系数据库中类似的语句
等于{<key>:<value>}db.stu1.find({"name":"李小红"}).pretty()where name = '李小红'
小于{<key>:{$lt:<value>}}db.stu1.find({"age":{$lt:18}}).pretty()where age < 18
小于或等于{<key>:{$lte:<value>}}db.stu1.find({"age":{$lte:18}}).pretty()where age <= 18
大于{<key>:{$gt:<value>}}db.stu1.find({"age":{$gt:18}}).pretty()where age > 18
大于或等于{<key>:{$gte:<value>}}db.stu1.find({"age":{$gte:18}}).pretty()where age >= 18
不等于{<key>:{$ne:<value>}}db.stu1.find({"age":{$ne:18}}).pretty()where age != 18

AND 条件

find() 方法可以传入多个键 (key),每个键 (key) 以逗号隔开,即常规 SQL 的 AND 条件。如查询集合 stu1 中年龄为20岁的男性信息:

db.stu1.find({"age":20, "sex":"男"}).pretty()  

删除文档数据

删除指定的数据:

db.stu1.remove({'age':20})     //删除年龄为20的数据  

删除全部数据(集合并不会删除):

db.remove({})  

加油!

感谢!

努力!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-25 11:38:09  更:2022-05-25 11:39:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:45:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码