Mongodb的详细简介

一、要点解释

1.mongoDB优点:

 

1.MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。

2.如果负载的增加,它可以分布在计算机网络中的其他节点上这就是所 谓的分片。

3. MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++, PHP,C#等多种语言。

4.你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的 扩展性。

2.常见的数据库

关系型数据库和NoSQL数据库

3.MongoDB的特点:

ed06a811dc6b4a379107e25c6f8e22fb.png

4.为什么要学习MongoDB

MongoDB解决Mysql 的“三高”问题:

     1.对数据库高并发写入需求

     2.对海量数据高效率存储访问需求 3.对数据库高扩展和高可用的需求

 MongoDB 实际应用:

    1.社交场景,比如朋友圈,附近的人的地点的存储

   2.游戏场景,比如用户当前装备,得分等

   3.物流场景,比如快递的位置,状态,途径 4.视频场景,比如直播中的点赞数和互动留言等。

5.MongoDB的缺点:

 

1. MongoDB 不支持事务

2. MongoDB 不能进行多表联查

6.MongoDB和Mysql对比:

dcf8a12d7d2b4dee8958d2c4f26404b5.png

7.MongoDB名词概念:

05a68395a9514923b4622b1c49ba9846.png

二、MongoDB数据库显示

       查看所有数据库:show dbs;

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。
•admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数 据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
•local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
•config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

三、 MongoDB数据库创建/删除

创建数据库: use studentcourse

 

如果数据库不存在,则创建数据库,否则切换到指定数据库。 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档

(记录),集合才会真正创建。 通过 db 来查看当前使用的数据库

删除数据库: db.dropDatabase()

四、MongoDB的操作集合

创建集合:db.createCollection('student')

查看集合: show collections;

删除集合: db.student.drop;

五、MongoDB数据类型

864bc26ed2ed418d8678ce4f2aa0085c.png

六、MongoDB在集合中插入数据

插入的数据被称为文档。

文档的数据结构和 JSON 基本一样。 所有存储在集合中的数据都是 BSON 格式。

BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。

db.集合名.insert(document)

db.col.insert({title: '一些数据',

description: 'MongoDB 是一个 Nosql 数据库',

tags: ['mongodb', 'database', 'NoSQL'] })

实现代码:

//插入数据
db.student.insert(
    {
        shuai: true,
        money: true,
        gf: [{ stuname: '小张' }, { stuname: '小李' }]
    }
)
db.student.insert({ stuname: '张三', age: 16 })
db.student.insert({ stuname: '李四', age: 17 })
db.student.insert({ stuname: '王五', age: 16 })
db.student.insert({ stuname: '赵六', age: 18 })
db.student.insert({ stuname: '哈哈', age: '19' })
db.student.insert({ stuname: '赵六六', age: 18 })
db.student.insert({ stuname: '六六', age: 20 })
db.student.insert({ stuname: '六小龄童', age: 20 })
db.student.insert({ stuname: '刘小', age: 20 })
db.student.insert({ stuname: '小小', age: 21 })

八、MongoDB在集合中更新数据

更新数据

语法:

db.集合名.update({查询条件},{$set:{更新内容}}, { upsert: ,

multi: ,

} ) upsert: 默认为false ,如果查询不到数据,则把跟新输入插入

multi:默认为false,默认只改一条,true,更改多条

实现代码:

//修改数据
use myschool;
 
//修改如果有多个结果符合条件时,只改_id最小的一个
db.student.update(
    { stuname: '赵六' },  //条件
    { $set: { age: 18 } }
);
 
//{mutil:true} 把所有符合条件的都修改
db.student.update(
    { stuname: '赵六' },  //条件
    { $set: { age: 25 } },
    { multi: true }
);
db.student.insert({ stuname: '赵六', age: 20 })
 
//{upsert:true}没有匹配到的数据作为新增值的主键
db.student.update(
    { stuname: '小张' },
    { $set: { age: 20 } },
    { upsert: true }
);
 
//数值改变
db.student.update(
    { stuname: '小张' },
    { $inc: { age: -50 } }
);
 

更新数据

如果我们想实现在某一列上在原有的值基础之上进行递增1效果可以用$inc运算符来实现

语法:

db.集合名.update({查询条件},{$inc:{字段名:NumberInt(1)}})

例如

db.col.update({‘_id':’1'},{$inc:{likenum:NumberInt(1)}})

九、MongoDB在集合中删除文档

be4262cda4494686855fb5c39f0c33c2.png

实现代码:

//删除数据
//全部删除
db.student.remove({});
 
//带条件删除
db.student.remove({ stuname: '张三' });
 
//注意
db.student.remove({ age: 60 });
//主键编号较小的一条数据
db.student.remove({ age: 16 }, { justOne: true });
db.student.remove({ age: '19' }, { justOne: true });

十、MongoDB在集合中查询文档

906de71a52b543c9aee60b615b21bf72.png

实现代码:

//查询
//全查
db.student.find();
 
//根据条件查询
db.student.find({ stuname: '赵六' });
//age 小于20岁的人
db.student.find({ age: { $lt: 20 } });
 
//age 大于等于18并且age1小于等于60
db.student.find(
    {
        age: { $gte: 18, $lte: 60 },
    }
 
);

e2ff8d09ef124f76adaf57ffbf5c3d63.png

MongoDB的 Or条件:

 

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开, 即常规 SQL 的 AND 条件。

db.col.find({key1:value1, key2:value2})

以上实例中类似于 WHERE 语句:WHERE key1=‘value1’ AND key2=‘value2'

//或$or
db.student.find(
    {
        $or: [
            { age: { $gte: 18 } },
            { age: { $lte: 60 } }
        ]
    }
 
);

931ea6674b7d4c7c882da09d59ad55f9.png

771eaa29ab5c4ec2b89dd8bad70af529.png

//模糊查询
//:/开始/结束
db.student.find({stuname:/六/});
db.student.find({stuname:/^六/});
db.student.find({stuname:/六$/});

30b860f5ecff4f74921f4adae071b2f3.png

//分页
//limit(步长)
//skip((页码-1)*步长)
db.student.find().limit(2).skip((3-1)*2);

da985d53d0154a4287011a81c8a82dcc.png

//统计
db.student.find({stuname:'赵六'}).count();

bdc97acaceda46d1b1507a64e0655106.png

//排序sort()
//1升序
//-1降序
db.student.find().sort({age:1});
db.student.find().sort({age:-1});

a3963765c7cc4824a2326570aa2f5c54.png

b1cd9dfc258345ccb1798c1be02a61fa.png

//索引
db.student.getIndexes();
 
//创建索引
db.student.createIndex({age:1});
db.student.createIndex({age:-1});
 
//删除索引
db.student.dropIndex({age:1});

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值