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学习(二)sql语法 -> 正文阅读

[大数据]MongoDB学习(二)sql语法

MongoDB 学习

第一章: MongoDB学习(一) 详细安装教程 win10

第二章:MongoDB学习(二)sql语法

第三章:MongoDB学习(三)SpringBoot整合MongoDB



连接工具

连接工具可以选择上一章节中Mongodb自带的MongodbCompass。我这里采用的是Navicat 15。
在这里插入图片描述

和关系型数据库的对比

MongoDB是非关系型数据库当中最像关系型数据库的,所以我们通过它与关系型数据库的对比,来了解下它的概念。

SQL概念MongoDB概念说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument行/文档
columnfield字段/域
indexindex索引
primary keyprimary key主键/MongoDB自动将_id字段设置为主键

语法

1. 数据库(database)操作

创建数据库
使用use命令去创建数据库,当插入第一条数据时会创建数据库,例如创建一个test数据库;

> use test
switched to db test
> db.article.insert({name:"MongoDB 教程"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB

删除数据库
使用db对象中的dropDatabase()方法来删除;

> db.dropDatabase()
{ "dropped" : "test", "ok" : 1 }
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

2. 集合(collection)操作

创建集合
使用db对象中的createCollection()方法来创建集合,例如创建一个student集合;

> use test
switched to db test
> db.createCollection("student")
{ "ok" : 1 }
> show collections
student

删除集合
使用collection对象的drop()方法来删除集合,例如删除一个student集合;

> db.student.drop()
true
> show collections

3. 文档(document)操作

3.1 插入数据(文档)

-- 使用collection对象的insert()方法来插入文档
db.collection.insert(document);
-- 例如:
db.student.insert([
{
	'name':'小红',
	'age':7,
	'class':'小(二)班',
	'grade':[88,99,85]
},
{
	'name':'小明',
	'age':8,
	'class':'小(二)班',
	'grade':[83,90,85]
},
{
	'name':'张华',
	'age':8,
	'class':'小(一)班',
	'grade':[90,85,90]
}
]);

3.2 查询数据(文档)

-- 使用collection对象的find()方法可以获取文档
db.article.find({})
-- 查询全部
db.student.find();
-- 条件查询 class为小(二)班
db.student.find({'class':'小(二)班'});
-- 条件查询  去重
db.student.distinct('class');
-- 条件查询  age>7
db.student.find({age: {$gt: 7}});
-- 条件查询 age<8
db.student.find({age: {$lt: 8}});
-- 条件查询 age>=7
db.student.find({age: {$gte: 7}});
-- 条件查询 age<=8
db.student.find({age: {$lte: 8}});
-- 条件查询  age>=7 且 age<8
db.student.find({age: {$gte: 7, $lt: 8}});
-- 条件查询 模糊查询 name包含小
db.student.find({name: //});
-- 条件查询 模糊查询 name以小开头
db.student.find({name: /^/});
db.student.find({name:{$regex:'小'}});
-- 查询指定列 (select name,age from student;)
db.student.find({},{name: 1, age: 1});
-- 排序 1升序 2降序
db.student.find().sort({age: 1}); 
db.student.find().sort({age: -1});
-- 分页 查询前2条
db.student.find().limit(2);
db.student.find().sort({age: -1}).limit(2);
-- 分页 跳过前2条
db.student.find().skip(2);
-- 分页 查询1-3之间的数据
db.student.find().limit(3).skip(1);
-- or查询
db.student.find({$or: [{name: //},{age: 8}]});
-- 查询第一条数据
db.student.findOne();
db.student.find().limit(1);
-- 查询总数
db.student.find({}).count();
-- 分组查询
 db.student.aggregate([{
    $match: {
        age: {
            $gt: 8
        }
    }
}, {
    $group: {
        "_id": {
            "class": "$class",
            "age": "$age"
        },
        "total": {
            "$sum": 1
        }
    }
}, {
    $project: {
        "_id": 0,
        "name": "$_id.class",
        "age": "$_id.age",
        "count": "$total"
    }
}])

3.3 更新数据(文档)

-- 通过collection对象的update()来更新集合中的文档
db.collection.update(
   <query>,
   <update>,
   {
     multi: <boolean>
   }
)
# query:修改的查询条件,类似于SQL中的WHERE部分
# update:更新属性的操作符,类似与SQL中的SET部分
# multi:设置为true时会更新所有符合条件的文档,默认为false只更新找到的第一条
-- 例如 将name为小红的学生的年龄修改为9 
db.student.update({'name':'小红'},{$set:{'age':9}},{multi:true});
-- save()方法可以用来替换已有文档(小红的_id为'62a154ad345f0000ab005e14')
db.student.save(
{
	'_id': ObjectId('62a154ad345f0000ab005e14'),
	'name':'小红',
	'age':9,
	'class':'小(二)班',
	'grade':[88,99,85]
});

3.4 删除数据(文档)

-- 通过collection对象的remove()方法来删除集合中的文档
db.collection.remove(
   <query>,
   {
     justOne: <boolean>
   }
)
# query:删除的查询条件,类似于SQL中的WHERE部分
# justOne:设置为true只删除一条记录,默认为false删除所有记录

-- 例如 
db.student.remove({'name':'小红'});
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-14 22:40:05  更:2022-06-14 22:40:54 
 
开发: 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年5日历 -2024/5/19 22:18:59-

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