Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >面试官:说一下Redis和MongoDB的区别?

面试官:说一下Redis和MongoDB的区别?

作者头像
码农编程进阶笔记
发布于 2021-09-29 07:50:47
发布于 2021-09-29 07:50:47
4K00
代码可运行
举报
运行总次数:0
代码可运行

项目中用的是MongoDB,但是为什么用其实当时选型的时候也没有太多考虑,只是认为数据量比较大,所以采用MongoDB。

最近又想起为什么用MongoDB,就查阅一下,汇总汇总:

之前也用过redis,当时是用来存储一些热数据,量也不大,但是操作很频繁。现在项目中用的是MongoDB,目前是百万级的数据,将来会有千万级、亿级。

就Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库。这也是有道有理有根据的,

Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单;

MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,就像SQL数据库一样灵活,这一点在面试的时候很受用。

Mongodb与Redis应用指标对比

MongoDB和Redis都是NoSQL,采用结构型数据存储。二者在使用场景中,存在一定的区别,这也主要由于 二者在内存映射的处理过程,持久化的处理方法不同。MongoDB建议集群部署,更多的考虑到集群方案,Redis 更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。

MongoDB语法与现有关系型数据库SQL语法比较

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MongoDB语法            MySql语法

db.test.find({'name':'foobar'})             <==>          select * from test where name='foobar'

db.test.find()                                      <==>          select *from test

db.test.find({'ID':10}).count()             <==>          select count(*) from test where ID=10

db.test.find().skip(10).limit(20)          <==>          select * from test limit 10,20

db.test.find({'ID':{$in:[25,35,45]}})     <==>          select * from test where ID in (25,35,45)

db.test.find().sort({'ID':-1})                 <==>          select * from test order by IDdesc

db.test.distinct('name',{'ID':{$lt:20}}) <==>          select distinct(name) from testwhere ID<20

db.test.group({key:{'name':true},cond:{'name':'foo'},reduce:function(obj,prev){prev.msum+=obj.marks;},initial:{msum:0}})     <==>     select name,sum(marks) from testgroup by name

db.test.find('this.ID<20',{name:1})    <==>           select name from test whereID<20

db.test.insert({'name':'foobar','age':25})    <==>       insertinto test ('name','age') values('foobar',25)

db.test.remove({})                                     <==>       delete * from test

db.test.remove({'age':20})                        <==>       delete test where age=20

db.test.remove({'age':{$lt:20}})                <==>        delete test where age<20

db.test.remove({'age':{$lte:20}})              <==>        delete test where age<=20

db.test.remove({'age':{$gt:20}})              <==>         delete test where age>20

db.test.remove({'age':{$gte:20}})            <==>         delete test where age>=20

db.test.remove({'age':{$ne:20}})             <==>         delete test where age!=20

db.test.update({'name':'foobar'},{$set:{'age':36}})<==> update test set age=36 where name='foobar'

db.test.update({'name':'foobar'},{$inc:{'age':3}})<==> update test set age=age+3 where name='foobar'

模糊查询:$regex

db.test.find({"name":{$regex:"aaa"}})

分组个数过滤

db.getCollection('id_mapper').aggregate([{$group:{ _id :"$contract_id",count:{$sum:1}}},{$match:{count:{$gt:1}}}])

判断是否为空

db.getCollection('id_mapper').find({"sinocardid":{$in:[null]}})
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农编程进阶笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MongoDB简介及安装配置
如果你从来没有接触MongoDB或对MongoDB有一点了解,如果你是C#开发人员,那么你不妨花几分钟看看本文。本文将一步一步带您轻松入门。
Vaccae
2019/07/24
1.4K0
mongodb概述 二以及和 mysql的比较
在MongoDB中,文档是对数据的抽象,它被使用在Client端和Server端的交互中。所有的Client端(各种语言的Driver)都会使用这种抽象,它的表现形式就是我们常说的BSON(Binary JSON )。
bear_fish
2018/09/20
2.6K0
mongodb11天之屠龙宝刀(三)基本操作:增删改查与mysql对比
mongodb11天之屠龙宝刀(三)基本操作:增删改查与mysql对比 基本概念_id和ObjectId: 1._id   MongoDB 中存储的文档必有一”_id” 键。这个键的值可以是任何类型的,默认是个ObjectId 对象。在一个集合里面,每个文档都有唯一的”_id” 值,来确保集合里面每个文档都能被唯一标识。如果有两个集合的话,两个集合可以都有一个值为123 的”_id” 键,但是每个集合里面只能有一个”_id” 是123 的文档。 2. ObjectId   ObjectId 是”
学到老
2018/03/19
7040
mongodb11天之屠龙宝刀(三)基本操作:增删改查与mysql对比
mongovue查询字段_mongodb查询速度
{“ei”:”AW4BROILANDSTART1″, //条件一 “cd”:{$elemMatch:{“0004”:{$gte:0}}},  //条件二,cd为集合 ,0004为集合中的key
全栈程序员站长
2022/09/25
2.8K0
MongoDB学习整理
MongoDB 是介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富,最像关系数据库的,语法类似javascript面向对象的查询语言,是一个面向集合的、模式自由的文档型数据库。
CS逍遥剑仙
2019/01/01
9080
MongoDB急速入门
前面我们已经介绍过缓存k-v数据库Redis,华为的OpenGauss关系型数据库,今天我们继续介绍一款NoSQL数据库MongoDB。
Python研究所
2022/09/01
6490
一文了解Mongodb使用的语法
在使用数据库之前,我们需要先了解下其基本的数据结构类型。防止我们出现类型不匹配的问题。 支持的数据类型补充的是本人在开发中经常使用的。还有更多的数据类型可以参考官方文档。
用户2196435
2018/11/08
6190
MongoDB后台shell语句(一)
1.连接数据库 ./mongo 2.创建数据库 (如果数据库不存在,则创建数据库,否则切换到指定数据库。)
六月的雨在Tencent
2024/03/28
2050
mac系统下安装、启动、停止mongodb
MongoDB 下载地址: https://www.mongodb.com/download-center?jmp=nav#community nodejs下载地址: https://nodejs.o
极客教程
2018/03/01
2.5K0
mac系统下安装、启动、停止mongodb
MongoDB入门实操《中篇》
首先我们来了解几个概念,虽然MongoDB入门实操《上篇》这篇文章已经提到过,这里再次加深印象: 集合:Mongo 中的集合就是mysql 的表的表现形式 文档:文档的数据结构和JSON 基本一样,它就是集合(表)中的一条记录,相当于mysql 的行row 字段:Mongo 中的field 相当于mysql 中的column 索引:Mongo 中的index 与mysql 的index 一样 主键:Mongo 中的primary key 与mysql 的一样,其中Mongo 中将_id 自动设置为主键
Wu_Candy
2022/07/04
2490
MongoDB运维与开发(五)---角色管理
之前的两篇文章,我们已经讲清楚了MongoDB的用户权限管理,接下来的文章我们来看MongoDB的角色管理。
AsiaYe
2020/11/10
9290
MongoDB运维与开发(五)---角色管理
mongodb服务启动失败_mongodb启动不了
1.首先打开dos窗口,然后选择路径到你的安装路径下的bin目录(我的路径是的D:mongo\mongodb\bin)
全栈程序员站长
2022/08/03
7.8K0
mongodb服务启动失败_mongodb启动不了
MongoDB数据插入、删除、更新、批量更新某个字段
查询出hospitalName是xx医院和openId以2开头的所有记录,并且更新my_booking表中的payType为1.
周小董
2019/03/25
27.2K0
MongoDB数据插入、删除、更新、批量更新某个字段
【免费开源】积木报表MongoDB数据集使用实战
积木报表 JimuReport,是一款免费的数据可视化报表,含报表、大屏和仪表盘,像搭建积木一样完全在线设计!功能涵盖:数据报表、打印设计、图表报表、门户设计、大屏设计等!
JEECG
2025/05/12
950
MongoDB快速入门
随着大数据时代的到来,数据急速增长,导致关系型数据库(SQL)越来越不够用。高性能、可扩展的数据库变得越来越重要起来,在这样的场景下,非关系型数据库(NoSQL)应运而生,这里的“NoSQL”不是“NoSQL(不是SQL)”,而是“Not only SQL(不仅是SQL)”的简称。2009年,分布式文档型数据库MongoDB引发了一场去SQL的浪潮。
没有故事的陈师傅
2020/04/10
1.3K0
MongoDB快速入门
MongoDB
​ MongoDB 是由 C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。
OY
2022/09/28
5K0
MongoDB
mongodb的启动和使用
启动mongodb 启动前,先指定mongodb的data目录,如果没有就创建一个: 1 2 [root@test6 ~]# cd /usr/local/mongodb [root@test6 mongodb]# mkdir data 然后,执行如下命令即可启动mongodb: 1 [root@test6 mongodb]# /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logp
用户1220053
2018/02/09
1.5K0
mongodb的启动和使用
Linux系统下MongoDB的简单安装与基本操作
Mongo DB ,是目前在 IT 行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式,备受当前 IT 从业人员的青睐。Mongo DB 很好的实现了面向对象的思想(OO 思想),在 Mongo DB 中 每一条记录都是一个 Document 对象。Mongo DB 最大的优势在于所有的数据持久操作都无需开发人员手动编写 SQL 语句,直接调用方法就可以轻松的实现 CRUD 操作。 一、下载 mongodb 前往 mongodb 官网下载页面:https://www.mongodb.org
张戈
2018/03/23
2.3K0
玩转mongodb(三):mongodb项目实战(初战)
插入:对应MongoDB中脚本的db.getCollection('person').insert({"name":"ryan1","age":21})
壮壮熊
2022/08/18
7720
玩转mongodb(三):mongodb项目实战(初战)
MongoDB入门实操《中篇》续
应用场景: 1、如果需要将MongoDB作为后端DB来代替Mysql使用,即这里Mysql与MongoDB 属于平行级别。 那么,这样的使用可能有以下几种情况的考量: (1)、MongoDB所负责部分以文档形式存储,能够有较好的代码亲和性,JSON格式的直接写入方便。(如日志之类) (2)、从datamodels设计阶段就将原子性考虑于其中,无需事务之类的辅助。开发用如nodejs之类的语言来进行开发,对开发比较方便。 (3)、MongoDB本身的failover机制,无需使用如MHA之类的方式实现。
Wu_Candy
2022/07/04
2300
MongoDB入门实操《中篇》续
相关推荐
MongoDB简介及安装配置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验