Mongodb和mysql的区别

Mongodb和mysql的区别,第1张

Mongodb和mysql的区别

1Mongodb简介及优缺点分析

Mongodb是非关系数据(nosql ),属于文档型数据库。文档是mongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。

存储方式:虚拟内存+持久化。

查询语句:是独特的Mongodb的查询方式。

适合场景:事件的记录,内容管理或者博客平台等等。

架构特点:可以通过副本集,以及分片来实现高可用。

数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。

成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。

优点:

快速!在适量级的内存的Mongodb的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。高扩展性,存储的数据格式是json格式!

缺点:

① mongodb不支持事务 *** 作。

② mongodb占用空间过大。

③ 开发文档不是很完全,完善。

2MySQL优缺点分析

优点:

在不同的引擎上有不同 的存储方式。

查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。

开源数据库的份额在不断增加,mysql的份额页在持续增长。

缺点:

在海量数据处理的时候效率会显著变慢。

3Mongodb和MySQL数据库的对比

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。

MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。

4MongoDB常用语句

# 连接Mongo数据库,并设置数据存储地址

mongodexe --dbpath "d:softwareMongoDBServer30data"

#-----------------------#1# 数据库

# 查看所有的数据库

show dbs

# 删除当前使用的数据库

dbdropDatabase()

# 使用这个数据库(只有插入数据后完成创建数据库)

use dbt

# 查看当前使用的数据库

db

dbgetName()

# 查看当前数据库状态

dbstats()

# 修复当前数据库

dbrepairDatabase()

# 从一个数据库复制到另一个数据库

dbcopyDatabase("mydb", "temp", "127001");

#-----------------------#2# 集合

# 查看当前数据库下所有的集合

show collections

show tables

# 创建名称为coll集合

dbcreateCollection('coll')

dbcreateCollection("coll2", {capped:true, autoIndexId:true, size:6142800, max:10000}) # 可选参数

# 查看当前集合状态

dbcollstats()

# 删除名称为coll集合

dbcolldrop()

#-----------------------#3# 集合数据

# 插入空数据并且直接创建名称为coll集合

dbcollinsert({})

# 插入一个或多个数据

dbcollinsert({name:'tom', age:22})

dbcollinsert([{name:'adam', age:10},{name:'john', age:23}])

# 添加数据(save方法可以修改相同id的数据)

dbcollsave({name:'allen'})

# 删除一个或所有的数据

dbcollremove({name:'tom'})

dbcollremove({})

# 删除符合条件的数据中的第一条

dbcollremove({name:'tom'}, 1)

# 更改数据

dbcollupdate({name:'tom', age:22}, {$set:{name:'tom', age:222}})

# 查看数据

dbcollfind()

# 查看一条数据

dbcollfindOne()

dbcollfind({}, {name:1, '_id':0}) # 1表示显示,0表示不显示(find默认显示_id)

# 格式化显示数据,使数据更加清晰明了

dbcollfind()pretty()

# 使用and,or查看数据

dbcollfind({name:'tom', age:22}) # 等同and使用

dbcollfind({$or:[{name:'tom'}, {age:21}]}) # or使用

# *** 作符大于,小于,等于,不等于,大于不等于,小于不等于

dbcollfind({age: {$gt: 22}}) # 大于

dbcollfind({age: {$lt: 22}}) # 大于

dbcollfind({age: 22}) # 等于

dbcollfind({age: {$ne: 22}}) # 不等于

dbcollfind({age: {$gte: 22}}) # 大于等于

dbcollfind({age: {$lte: 22}}) # 小于等于

# 显示从skip之后limit个

dbcollfind()limit(2)skip(1)

#-----------------------# # 用户

# 3x之后版本添加用户

use admin

dbcreateUser({user:'nu', pwd:'nu', roles:[{role:'readWrite',db:'admin'}]})

# 用户认证

dbauth("nu", "nu");

# 显示当前所有用户

show users;

dbsystemusersfind()

3x版本删除用户

dbremoveUser('nu') # 不推荐使用,已经废弃

dbdropUser("nu");

# 当前db版本

dbversion();

# 当前db的链接机器地址和端口

dbgetMongo();

# 备份到备份目录

mongodump

# 从备份目录恢复备份语句。

mongorestore

咱们下期见。

use 命令

MongoDB use DATABASE_NAME 用于创建数据库。该命令将创建一个新的数据库,如果它不存在,否则将返回现有的数据库。

语法:

use DATABASE 语句的基本语法如下:

use DATABASE_NAME

示例:

如果想创建一个数据库名称 <mydb>, 那么 use DATABASE 语句如下:

>use mydb

switched to db mydb

要检查当前选择的数据库使用命令 db

>db

mydb

如果想检查数据库列表,使用命令show dbs

>show dbs

local 078125GB

test 023012GB

创建的数据库mydb 列表中是不存在的。要显示的数据库,需要把它插入至少一个文件。

>dbmovieinsert({"name":"tutorials yiibai"})

>show dbs

local 078125GB

mydb 023012GB

test 023012GB

在 MongoDB 默认数据库测试。如果没有创建任何数据库,然后集合将被存储在测试数据库。

1、基于mongo实现远程连接

[plain] view plaincopy

mongo -u admin -p admin 1921680197:27017/pagedb

通过mongo实现连接,可以非常灵活的选择参数选项,参看命令帮助,如下所示:

[plain] view plaincopy

mongo --help

MongoDB shell version: 183

usage: mongo [options] [db address] [file names (ending in js)]

db address can be:

foo foo database on local machine

19216905/foo foo database on 19216805 machine

19216905:9999/foo foo database on 19216805 machine on port 9999

options:

--shell run the shell after executing files

--nodb don't connect to mongod on startup - no 'db address'

arg expected

--quiet be less chatty

--port arg port to connect to

--host arg server to connect to

--eval arg evaluate javascript

-u [ --username ] arg username for authentication

-p [ --password ] arg password for authentication

-h [ --help ] show this usage information

--version show version information

--verbose increase verbosity

--ipv6 enable IPv6 support (disabled by default)

2、基于MongoDB支持的javascript实现远程连接

当你已经连接到一个远程的MongoDB数据库服务器(例如,通过mongo连接到1921680184),现在想要在这个会话中连接另一个远程的数据库服务器(1921680197),可以执行如下命令:

[plain] view plaincopy

> var x = new Mongo('1921680197:27017')

> var ydb = xgetDB('pagedb');

> use ydb

switched to db ydb

> db

ydb

> ydbpagefindOne()

{

"_id" : ObjectId("4eded6a5bf3bfa0014000003"),

"content" : "巴黎是浪漫的城市,可是",

"pubdate" : "2006-03-19",

"title" : "巴黎:从布鲁塞尔赶到巴黎",

"url" : ">

一、创建Mongodb数据库

由于Mongodb不是关系型数据库文件,实际上,它并不存在传统关系型数据库中的所谓“数据库”的概念,但不用担心,当你第一次新增数据时,mongodb就会以collection集合的形式进行保存和新建,而不需要你手工去新建立。下面是例子:

1)列出当前的数据库

MongoDB shell version: 181

connecting to: test

> show dbs

admin 003125GB

local (empty)

可以使用show dbs来列出当前有多少个数据库,上面看到的是有两个,分别是admin和local。

2) 定义新的数据库名

我们通过使用“use new-databasename”的语法去使用一个新的数据库,注意,即使你的数据库还没建立起来,依然可以这样使用,因为mongodb会在真正插入了数据后,才会真正建立起来。

>use mkyongdb

switched to db mkyongdb

> show dbs

admin 003125GB

local (empty)

注意,在use mkyongdb后,mkyongdb实际上还没真正建立起来,只是表明目前是在使用mkyongdb了。

3)保存数据

定义一个collection,名为“users”,然后插入数据,如下:

> dbuserssave( {username:"mkyong"} )

> dbusersfind()

{ "_id" : ObjectId("4dbac7bfea37068bd0987573"), "username" : "mkyong" }

>

> show dbs

admin 003125GB

local (empty)

mkyongdb 003125GB

可以看到,用dbusersfind()可以找出已插入的数据。这个时候,名为“users”的collection已经建立起来了,同时,数据库mkyongdb也建立起来了。转载,仅供参考。

据我所知,目前mongoDB没有“或”这个东西

但我刚才在网上查了下

发现了下面的信息,你参考下吧

在mongodb中有$or *** 作符的,官网中给出的例子如下:

Simple:

dbfoofind( { $or : [ { a : 1 } , { b : 2 } ] } )

With another field

dbfoofind( { name : "bob" , $or : [ { a : 1 } , { b : 2 } ] } )

The $or operator retrieves matches for each or clause individually and eliminates duplicates when returning results A number of $or optimizations are planned for 18 See this thread for details

$or cannot be nested

安装完成mongo客户端后,点击mongo的图标,启动运行程序

打开面板后在界面的左上角有一个可点击的菜单connect连接按钮,这里相信不用我说读者就知道。

点击后如下图,如果读者已经配置过数据库连接会话信息,那么就会和下图一样,显示出配置的连接数据库会话名。

读者需要选择一个数据库的连接,然后点击下方的Connect连接

如果读者没有配置连接需要点击下图红色方框选中的“+”号,点击进行创建一个连接。

下面就是配置数据库的连接信息,IP、端口、口令等

连接进入后可以看到对应的数据库中所有的表,将鼠标移至需要的表格,然后鼠标右键,选择view(视图)

打开后选择第二个视图--Table View,表格视图,就可以看到数据库表中的数据和字段名称。

我的回答是不建议都使用MongoDB。NOSQL数据库和关系型数据库各有各的优劣,在项目里面一般需要根据不同的需求和场景来搭配使用。对于非关系型数据库MongoDB来说,可以存放访问频繁的数据,而且SNS里确实存在一些业务适合MongoDB,但是我们开发系统,是功能和性能的综合考虑,一般需要关系型数据库和非关系型数据库配合使用。

以上就是关于Mongodb和mysql的区别全部的内容,包括:Mongodb和mysql的区别、怎么用mongodb创建数据库、mongodb 怎么连接远程数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9756010.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存