Mongodb基础与入门

1. 优点
            基于分布式文件存储的数据库。能为WEB应用提供可扩展的高性能数据存储解决方案。

2. 将数据存储为一个文档,数据结构由键值对组成。文档类似于JSON对象。字段值可以包含其他文档,数组以及文档数组。

1. 可执行文件位于bin目录下      数据存储在data目录的db目录下【需手动创建】
2. /data/db 是默认启动的数据库路径( --dbpath )
3. 运行服务:执行mongo安装目录中的bin目录执行mongod命令来启动mongdb服务。
        若数据库目录非/data/db   可通过 --dbpath指定、
4. 进入后台: bin目录,然后执行mongo命令文件。默认连接到test文档(数据库)
                         cd /home/app/mongodb/bin/mongo
5. 启动HTTP用户界面,需指定参数--rest    $ ./mongod --dbpath=/data/db --rest
     Web界面访问端口比服务端口多1000
6.  基本概念:文档,集合,数据库
     数据库:database    数据表/集合:collection    数据记录行/文档:document
     数据字段/域:field     索引:index    主键:primary key  自动将_id字段设为主键
     不支持表链接
7. 一个mongodb可建立多个数据库。默认数据库为db(存储在data目录中),
    ???MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

1. 命令【转8】
            显示所有数据库列表:show dbs
            显示当前数据库集合或对象:db
            连接到指定数据库:use 数据库名
                    数据库可通过名字标识。数据库名可以是满足以下条件的任意UTF-8字符串。
                            (1)不能是空字符串( " " )
                            (2)不能含有空格,点(.),$,/,\和\0 (空字符)
                            (3)全部为小写
                            (4)最多为64字节
                    特殊数据库:
                            (1)admin
                                    权限上这是root数据库。若添加一个用户则此用户自动继承所有数据库的权限
                            (2)local
                                    永远不会被复制的数据库。可以用来存储限于本地单台服务器的任意集合
                            (3)config
                                    当Mongo用于分片设置时,在内部使用,用于保存分片的相关信息。
    2. 文档
            一组键值对(即BSON)。
            ???不需要设置相同的字段,且相同的字段不需要相同的数据类型。
            注意:
                    (1)键值对是有序的
                    (2)值不仅可以是字符串,还可以是其他几种数据类型
                    (3)区分类型和大小写
                    (4)不能有重复的键
                    (5)键一般为任意UTF-8字符串
            键命名规范:        
                    (1)不能含有空字符\0,???这个字符用来表示键的结尾。
                    (2).和$有特殊意义,只能在特定环境下使用
                    (3)???以下划线 "_" 开头的键是保留的
    3. 集合
            文档组,类似于表格。
            存储在数据库中,没有固定的结构。可插入不同格式和类型的数据,但通常插入集合的数据会有一定的关联性
            插入第一个文档时,集合就会被创建
            集合命名规范:
                    (1)不能是空字符串
                    (2)不能含有空字符\0,???这个字符用来表示集合名的结尾。
                    (3)不能以 "system."开头,这是为系统保留的前缀
                    (4)不能含有保留字符。访问系统创建的集合需要在名字里出现 $
    4. capped collections
            有很高的性能以及队列过期的特性(过期按照插入的顺序)
            是高性能自动的维护对象的插入顺序。适合类似记录日志功能
            需显示创建并指定一个collection的大小(包含了数据的头信息),单位为字节。collection的数据存储空间值提前分配
            注意:
                    可添加新的对象,但对象不会增加存储空间
                    可进行更新,如果新添的对象增加存储空间,更新失败
                    不允许进行删除。drop()删除collection所有的行【删除后须显示的重新创建这个collection】
                    在32bit机器中,最大存储为1e9( 1X109)个字节。
    5. 元数据
            数据库的信息是存储在集合中的。使用系统的命名空间:dbname.system.*
            dbname.system.* 是包含多种系统信息的特殊集合。例: dbname.system.namespaces        列出所有名字的空间
                                                                                                              dbname.system.indexes               列出所有索引
                                                                                                              dbname.system.profile                包含数据库概要(profile)信息
                                                                                                              dbname.system.uses                     列出所有可访问数据库的用户
                                                                                                              dbname.local.sources                   包含复制对端(slave)的服务器信息和状态
             注意:修改系统集合的对象限制
                     在{{system.indexes}}插入数据,可以创建索引。但除此之外该表信息是不可变的(特殊的drop index命令将自动更新相关信息)。
                     {{system.users}}是可修改的。 {{system.profile}}是可删除的。
    6.常用数据类型
            String:UTF-8 编码的字符串,存储数据常用的数据类型
            Integer:存储数值
            Boolean:存储布尔值
            Double:存储(双精度)浮点值
            Min/Max keys:将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
            Arrays:将数组或列表或多个值存储为一个键
            Timestamp:时间戳,记录文档修改或添加时间
            Object:用于内嵌文档
            Null:创建空值
            Symbol:采用特殊符号类型
            Date:使用UNIX时间格式存储当前日期或时间,可自己指定
            Object ID:创建文档的ID
            Binary Data:存储二进制数据
            Code:用于在文档中存储JavaScript代码
            Regular expression:存储正则表达式

7. 连接[Mongodb Shell 连接]
            连接语法:
                    mongodb://[username:[email protected]] host1 [:port1] [, host2 [:port2]] [/[database] [?options] ]
                    PS:
                            mongodb://    固定格式,必须指定
                            [username:[email protected]]      如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库
                            host1      至少指定一个host[要连接的服务器的地址],如果连接复制集,请指定多个主机地址
                            portX      可选的指定端口,默认为27017
                            /database   如果指定username:[email protected],连接并验证登陆指定数据库。若不指定,默认打开admin数据库。  
                            ?options      如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开
                               例:
                                    replicaSet = name        
                                    slaveOk = true | false
                                    safe = true | false
                                    w = n
                                    wtimeoutMS = ms
                                    fsync = true | false
                                    journal = true | false
                                    connectTimeoutMS = ms
                                    socketTimeoutMS = ms
    8. 操作
            创建数据库语法格式:
                    use 数据库名        如果不存在则创建数据库,否则切换到指定数据库
            删除数据库语法格式:
                    db.dropDatabase()        删除当前数据库,默认为test  可使用 db 命令查看当前数据库名
            插入文档语法格式:[ 使用 insert() 或 save() 方法向集合中插入文档]
                    db.COLLECTION_NAME.insert(document)
                    db.col.save(document)       不指定_id字段,save() 类似于insert()  指定则会更新该_id的数据
            更新文档语法格式:[使用 update() 和 save() 方法来更新集合中的文档。update() 用于更新已存在的文档,save() 通过传入的文档来替换已有的文档]
                    db.collection.update{
                            <query>,
                            <update>,
                                {
                                    update:<boolean>
                                    multi:<boolean>
                                    writeConcern:<document>
                            }
                    }
                    参数说明:
                            query:update的查询条件,类似sql update查询内where后面的。
                            update:update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
                            upsert:如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
                            multi:mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
                            writeConcern:抛出异常的级别。

db.collection.save{
                            <document>,
                            {
                                    writeConcern:<document>
                            }
                    
                    }
                    参数说明:
                            document:文档数据
                            writeConcern:抛出异常的级别
            删除文档语法格式:【在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。】
                    db.collection.remove{
                            <query>,
                            <justOne>
                    }
                    2.6版本之后:
                    db.collection.remove{
                            <query>,
                            {
                                justOne:<boolean>,
                                writeConcern:<document>
                            }
                    }
                    参数说明:
                            query:删除的文档的条件。
                            justOne:如果设为 true 或 1,则只删除一个文档。
                            writeConcern:抛出异常的级别。
                    删除全部:
                            db.col.remove( { } )
                            db.col.find(  )
            查询文档语法格式:
                    db.collection.find(query,projection)
                    参数说明:
                             query:使用查询操作符指定查询条件
                             projection:使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)
                    易读方式读取数据:db.col.find().pretty()
                             pretty():以格式化的方式显示所有文档

时间: 2024-10-12 17:46:39

Mongodb基础与入门的相关文章

MongoDB基础入门视频教程

MongoDB基础入门视频教程http://www.icoolxue.com/album/show/98

MongoDB基础入门之一:基础入门和复制集

mongoDB基础入门 介绍 mongoDB是一个存储文档的非关系型数据库 mongoDB的结构: 数据库: 包含集合 集合: 存储文档 文档: json格式 一条命令在docker容器中运行mongoDB docker run --name mymongo -v /mongo/data:/data/db -d mongo:4 docker ps #查看容器状态 docker logs mymongo #查看日志 mongoExpress 的使用 基于网络的mongoDB数据库管理页面 dock

MongoDB基础知识 01

MongoDB基础知识  1. 文档  文档是MongoDB中的数据的基本单元,类似于关系型数据库管理系统的行. 文档是键值对的一个有序集.通常包含一个或者多个键值对. 例如: {”greeting" : "Hello, world!", "foo", 3} 2. 集合(collection) 集合就是一组文档,类似关系型数据库中的一张表. 3. 数据库(database) 多个文档组成集合,多个集合组成数据库.一个MongoDB实例可以承载多个数据库.

windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) 简单说几句 在mongodb中3元素:db(数据库).collection(集合).document(文档) 其中collection类似于数据库中的表,document类似于行,这样一来我们就将内容对比起来记忆学习了. 数据格式 MongoDB documents是BSON格式(一种类json的一种二进制形式的存

C#消息队列(MQ)零基础从入门到实战演练

一.课程介绍 如果您从工作中之听过但未有接触过消息对队列(MQ),如果你接触过一点关于MQ的知识,如果没有这么的多如果的话......,那么阿笨将通过本次<C#消息队列零基础从入门到实战演练>分享课让您对消息队列有一个实质性的了解和认识,达到实际的灵活贯通和运用.本次分享课您将学习到以下知识点: 1.微软MSMQ的基本使用技能以及MSMQ在WCF技术中的运用. 2.企业级RabbitMQ消息队列的两种消费模式(生产消费和发布订阅)的介绍和使用. 3.如何实现RabbitMQ客户端(Client

足彩基础知识入门(4)赛事数据库与预测平台基础概念介绍(一)

在足球赛事数据库以及统计分析预测平台中,有很多概念,如果不搞懂,很难进行下一步的工作.所以为了配合团队人员的学习和任务进行,特意编写这篇文章.如果有其他问题和不懂的,请留言,将根据情况进行更新. 本文原文地址:足彩基础知识入门(4)赛事数据库与预测平台基础概念介绍(一) 1.指数1/2/3.... 我在 足彩基础知识入门(3)足彩赔率的本质 一文中介绍了赔率的概念,那么指数的概念和赔率以及结果是相关的.我们举个例子: 如上图的比赛,前面是竞彩非让球的赔率:1.74-3.25-4.15,也就是说

脱壳基础知识入门

现在加解密发展己形成2个分支了,一个就是传统的算法,另一个就是加密壳.越来越多的软件采用了密码学相关算法,现在要做出一个软件注册机己不象前几年那 么容易,这就要求解密者必须要有一定的数学功底和密码学知识,而这些在短时间内是不容易掌握的.除了密码学的应用,越来越多的软件加壳了,因此要求解密者 必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛.壳发展到今天,强度越来越高了,将许多人挡在门外,使得大家望壳兴叹.另外,论坛现在两极 分化比较严重,高手讨论的脱壳技术新手看不懂,很多人想学脱壳,但

马哥教育第二十三MySQL基础应用入门

1.MySQL基础应用入门                安装mariadb-10.0.19:                      vim /usr/local/mariadb-10.0.19-linux-x86_64/INSTALL-BINARY                                               cd /usr/local                      ln -sv mariadb-10.0.19-linux-x86_64 mysql

Linux基础知识入门

[Linux基础]Linux基础知识入门及常见命令. 前言:最近刚安装了Linux系统, 所以学了一些最基本的操作, 在这里把自己总结的笔记记录在这里. 1,V8:192.168.40.10V1:192.168.40.11Linux ip:192.168.40.128 2,Linux是一个操作系统, 与windows的区别:Linux:图形化界面简单,性能很快,在企业中当做服务器来使用.Windows:图形化界面很炫,性能相对差,大众用户.windows的服务器: windows2003,win