mangodb教程_飞龙整理.pdf

上传人:asd****56 文档编号:70321199 上传时间:2023-01-19 格式:PDF 页数:97 大小:2.06MB
返回 下载 相关 举报
mangodb教程_飞龙整理.pdf_第1页
第1页 / 共97页
mangodb教程_飞龙整理.pdf_第2页
第2页 / 共97页
点击查看更多>>
资源描述

《mangodb教程_飞龙整理.pdf》由会员分享,可在线阅读,更多相关《mangodb教程_飞龙整理.pdf(97页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、W3School MangoDB教程来源:www.w3cschool.cc整理:飞龙日期:2014.10.1NoSQL 简介NoSQL(NoSQL=Not Only SQL),意即不仅仅是SQL。在现代的计算系统上每天网络上都会产生庞大的数据量。这些数据有很大一部分是由关系数据库管理系统(RDMBSs)来处理。1970年 E.F.Codds提出的关系模型的论文 A relational model of data for large shared data banks,这使得数据建模和应用程序编程更加简单。通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化

2、数据存储在网络和商务应用的主导技术。NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。关系型数据库遵循ACID规则事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:1、A(Atomicity)原子性原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。比如银行转账,从A账户转100元至B账户,分为两个步骤:1)

3、从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。2、C(Consistency)一致性一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。3、I(Isolation)独立性所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。比如现有有个交

4、易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。4、D(Durability)持久性持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。分布式系统分布式系统(distributed system)由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。分布式系统可以应用在在不同的平台上如:Pc、工作站

5、、局域网和广域网上等。分布式计算的优点可靠性(容错):分布式计算系统中的一个重要的优点是可靠性。一台服务器的系统崩溃并不影响到其余的服务器。可扩展性:在分布式计算系统可以根据需要增加更多的机器。资源共享:共享数据是必不可少的应用,如银行,预订系统。灵活性:由于该系统是非常灵活的,它很容易安装,实施和调试新的服务。更快的速度:分布式计算系统可以有多台计算机的计算能力,使得它比其他系统有更快的处理速度。开放系统:由于它是开放的系统,本地或者远程都可以访问到该服务。更高的性能:相较于集中式计算机网络集群可以提供更高的性能(及更好的性价比)。分布式计算的缺点故障排除:故障排除和诊断问题。软件:更少的软

6、件支持是分布式计算系统的主要缺点。网络:网络基础设施的问题,包括:传输问题,高负载,信息丢失等。安全性:开发系统的特性让分布式计算系统存在着数据的安全性和共享的风险等问题。什么是NoSQL?NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。为什么使用NoSQL?今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和

7、抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了,NoSQL数据库的发展也却能很好的处理这些大的数据。实例社会化关系网:Each record:UserID1,UserID2 Separate records:UserID,first_name,last_name,age,gender,.Task:Find all friends of friends of friends of.friends of a given user.Wikipedia 页面:Large collection

8、 of documents Combination of structured and unstructured data Task:Retrieve all pages regarding athletics of Summer Olympic before 1950.RDBMS vs NoSQLRDBMS-高度组织化结构化数据-结构化查询语言(SQL)(SQL)-数据和关系都存储在单独的表中。-数据操纵语言,数据定义语言-严格的一致性-基础事务NoSQL-代表着不仅仅是SQL-没有声明性查询语言-没有预定义的模式-键-值对存储,列存储,文档存储,图形数据库-最终一致性,而非ACID属性-非

9、结构化和不可预知的数据-CAP定理-高性能,高可用性和可伸缩性 NoSQL 简史NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。2009年,Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论2,来自Rackspace的Eric Evans再次提出了NoSQL的概念,这时的NoSQL主要指非关系型、分布式、不提供ACID的数据库设计模式。2009年在亚特兰大举行的no:sql(east)讨论会是一个里程碑,其口号是select fun,profit fromreal_world where rel

10、ational=false;。因此,对NoSQL最普遍的解释是非关联型的,强调Key-ValueStores和文档数据库的优点,而不是单纯的反对RDBMS。CAP定理(CAP theorem)在计算机科学中,CAP定理(CAP theorem),又被称作 布鲁尔定理(Brewers theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点:一致性(Consistency)(所有节点在同一时间具有相同的数据)可用性(Availability)(保证每个请求不管成功或者失败都有响应)分隔容忍(Partition tolerance)(系统中任意信息的丢失或失败不会影响系统的继续运

11、作)CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:CA-单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。CP-满足一致性,分区容忍必的系统,通常性能不是特别高。AP-满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。NoSQL的优点/缺点优点:-高可扩展性-分布式计算-低成本-架构的灵活性,半结构化数据-没有复杂的关系缺点:-没有标准化-有限的查询功能(到目前为止)-最终一致是不直观的程

12、序BASEBASE:Basically Available,Soft-state,Eventually Consistent。由 Eric Brewer 定义。CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。BASE是NoSQL数据库通常对可用性及一致性的弱要求原则:Basically Availble-基本可用Soft-state-软状态/柔性事务。Soft state 可以理解为无连接的,而 Hard state 是面向连接的Eventual Consistency-最终一致性 最终一致性,也是是 ACID 的最终目的

13、。ACID vs BASEACIDBASE原子性(Atomicity)基本可用(Basically Available)一致性(Consistency)软状态/柔性事务(Soft state)隔离性(Isolation)最终一致性(Eventual consistency)持久性(Durable)NoSQL 数据库分类类型部分代表特点列存储HbaseCassandraHypertable顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。文档存储MongoDBCouchDB文档存储一般用类似json的格式存储,存

14、储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。key-value存储Tokyo Cabinet/Tyrant可以通过key快速查询到其Berkeley DBMemcacheDBRedisvalue。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)图存储Neo4JFlockDB图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。对象存储db4oVersant通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。xml数据库Berkeley DB XMLBaseX高效的存储XML数据,并支持XML的内部

15、查询语法,比如XQuery,Xpath。谁在使用现在已经有很多公司使用了NoSQ:GoogleFacebookMozillaAdobeFoursquareLinkedInDiggMcGraw-Hill EducationVermont Public Radio什么是MongoDB?MongoDB 是由C+语言编写的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档。MongoDB是一个基于分布式文件存储的数据库。FirstName=Arun,Address=St.Xavi

16、ers Road,Spouse=Name:Kiran,Children=Name:Rihit,Age:8.FirstName=Sameer,Address=8 Gandhi Road.注意:以上数据有两个不同的文档(以.分隔)。以这种方式存储数据即为文件存储的数据库。MongoDB是一个面向文档的数据库。主要特点MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。你可以在MongoDB记录中设置任何属性的索引(如:FirstName=Sameer,Address=8 GandhiRoad)来实现更快的排序。你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。如果

17、负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上这就是所谓的分片。Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段。Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCo

18、mmand或mapreduce命令来执行MapReduce操作。GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C+,PHP,C#等多种语言。MongoDB安装简单。历史 2007年10月,MongoDB由10gen团队所发展。2009年2月首度推出。2012年05月23日,MongoDB2.1 开发分支发布了!该版本采用全新架构,包含诸多增强。2012年06月06

19、日,MongoDB 2.0.6 发布,分布式文档数据库。2013年04月23日,MongoDB 2.4.3 发布,此版本包括了一些性能优化,功能增强以及bug修复。2013年08月20日,MongoDB 2.4.6 发布,是目前最新的稳定版。MongoDB 下载你可以在mongodb官网下载该安装包,地址为:http:/www.mongodb.org/downloads。MonggoDB支持以下平台:OS X 32-bitOS X 64-bitLinux 32-bitLinux 64-bitWindows 32-bitWindows 64-bitSolaris i86pcSolaris 64M

20、ongoDB 工具有几种可用于MongoDB的管理工具。监控MongoDB提供了网络和系统监控工具Munin,它作为一个插件应用于MongoDB中。Gangila是MongoDB高性能的系统监视的工具,它作为一个插件应用于MongoDB中。基于图形界面的开源工具 Cacti,用于查看CPU负载,网络带宽利用率,它也提供了一个应用于监控MongoDB 的插件。GUIFang of Mongo 网页式,由Django和jQuery所构成。Futon4Mongo 一个CouchDB Futon web的mongodb山寨版。Mongo3 Ruby写成。MongoHub 适用于OSX的应用程序。Opr

21、icot 一个基于浏览器的MongoDB控制台,由PHP撰写而成。Database Master Windows的mongodb管理工具RockMongo 最好的PHP语言的MongoDB管理工具,轻量级,支持多国语言.MongoDB 应用案例下面列举一些公司MongoDB的实际应用:Craiglist上使用MongoDB的存档数十亿条记录。FourSquare,基于位置的社交网站,在Amazon EC2的服务器上使用MongoDB分享数据。Shutterfly,以互联网为基础的社会和个人出版服务,使用MongoDB的各种持久性数据存储的要求。bit.ly,一个基于Web的网址缩短服务,使用M

22、ongoDB的存储自己的数据。,一个MTV网络的联营公司,使用MongoDB的。Intuit公司,一个为小企业和个人的软件和服务提供商,为小型企业使用MongoDB的跟踪用户的数据。,资源网站查找,创建和发布开源软件免费,使用MongoDB的后端存储。,一个购买和出售手工制作物品网站,使用MongoDB。纽约时报,领先的在线新闻门户网站之一,使用MongoDB。CERN,著名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用MongoDB。window平台安装 MongoDBMongoDB 下载MongoDB提供了可用于32位和64位系统的预编译二进制包,你可以从MongoDB官网下载

23、安装,MongoDB预编译二进制包下载地址:http:/www.mongodb.org/downloads 解压下载zip包后,解压安装包,并安装它。创建数据目录MongoDB将数据目录存储在 db 目录下。但是这个数据目录不会主动创建,我们在安装完成后需要创建它。请注意,数据目录应该抽奖在根目录下((如:C:或者 D:等)。在本教程中,我们已经在D:盘中解压了mongodb文件,现在让我们创建一个data的目录然后在data目录里创建db目录。你也可以通过window的资源管理器中创建这些目录,而不一定通过命令行。命令行下运行 MongoDB 服务器为了从命令提示符下运行MongoDB服务器

24、,你必须从MongoDB目录的bin目录中执行mongod.exe文件。将MongoDB服务器作为Windows服务运行请注意,你必须有管理权限才能运行下面的命令。执行以下命令将MongoDB服务器作为Windows服务运行:mongod-bind_ip yourIPadress-logpath C:datadbConfmongodb.log-logappend-dbpathC:datadb-port yourPortNumber-serviceName YourServiceName-serviceDisplayNameYourServiceName-install下表为mongodb启动的

25、参数说明:参数描述-bind_ip绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP-logpath定MongoDB日志文件,注意是指定文件不是目录-logappend使用追加的方式写日志-dbpath指定数据库路径-port指定服务端口号,默认端口27017-serviceName指定服务名称-serviceDisplayNam指定服务名称,有多个mongodb服务时执行。-install指定作为一个Windows服务安装。MongoDB后台管理 Shell如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo.

26、exe文件,MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。当你进入mongoDB后台后,它默认会链接到 test 文档(数据库):由于它是一个JavaScript shell,您可以运行一些简单的算术运算:db 命令先了当前操作的文档(数据库):插入一些简单的记录并查找它:第一个命令将10插入到w3r集合的x字段中Linux平台安装MongoDB下载MongoDB提供了linux平台上32位和64位的安装包,你可以在官网下载安装包。下载地址:http:/www.mongodb.org/downloads安

27、装下载完成后,在你安装的目录下解压zip包。创建数据库目录MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。注意:请将data目录创建于根目录下(/)。命令行中运行 MongoDB 服务你可以再命令行中执行mongo安装目录中的bin目录执行mongod命令来启动mongdb服务。MongoDB后台管理 Shell如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo命令文件。MongoDB Shell是MongoDB自带的交互式Javasc

28、ript shell,用来对MongoDB进行操作和管理的交互式环境。当你进入mongoDB后台后,它默认会链接到 test 文档(数据库):由于它是一个JavaScript shell,您可以运行一些简单的算术运算:现在让我们插入一些简单的数据,并对插入的数据进行检索:第一个命令是将数据 8 插入到w3r集合(表)的 z 字段中。MongoDb web 用户界面在比MongoDB服务的端口多1000的端口上,你可以访问到MondoDB的web用户界面。如:如果你的MongoDB运行端口使用默认的27017,你可以在端口号为28017访问web用户界面。VM13721:1 Resource i

29、nterpreted as Image but transferred with MIME type text/html:http:/ 数据库,对象,集合描述不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档、集合、数据库,下面我们挨个介绍。数据库一个mongodb中可以建立多个数据库。MongoDB的默认数据库为db,该数据库存储在data目录中。在MongoDB中可以创建数据库,如果你想使用MongoDB,创建数据库不是必要的。show dbs 命令可以显示所有数据的列表。执行 db 命令可以显示当前数据库对象或者集合。运行use命令,可以连接到一个指定的数

30、据库。以上实例命令中,student 是你要检索的数据库。在下一个章节我们将详细讲解MongoDB中命令的使用。数据库名称可以是任何字符,但是不能包含空字符串,点号(.),或者。system 作为系统保留字符串不能作为数据库名。数据库名不能包含$。文档文档是mongodb中的最核心的概念,是其核心单元,我们可以将文档类比成关系型数据库中的每一行数据。多个键及其关联的值有序的放置在一起就是文档。在mongodb中使用一种类json的bson存储数据。bson数据可以理解为在json的基础上添加了一些json中没有的数据类型。如果我们会json,那么bson我们就已经掌握了一半了,至于新添加的数据

31、类型后面我会介绍。文档例子如下:site:w3cschool.cc 通常,object(对象)术语是指一个文件。文件类似于一个RDBMS的记录。我们可以对集合(collection)进行插入,更新和删除操作。下表将帮助您更容易理解Mongo中的一些概念:RDBMSMongoDBTable(表)Collection(集合)Column(栏)Key(键)Value(值)Value(值)Records/Rows(记录/列)Document/Object(文档/对象)下表为MongoDB中常用的几种数据类型。数据类型描述string(字符串)可以是一个空字符串或者字符组合。integer(整型)整数。

32、boolean(布尔型)逻辑值 True 或者 False。double双精度浮点型null不是0,也不是空。array数组:一系列值对象型,程序中被使用的实体。可以是一个值,变量,函数,或object者数据结构。timestamptimestamp存储为64为的值,只运行一个mongod时可以确保是唯一的。前32位保存的是UTC时间,单位是秒,后32为是在这一秒内的计数值,从0开始,每新建一个MongoTimestamp对象就加一。InternationalizedStringsUTF-8 字符串。Object IDs在mongodb中的文档需要使用唯一的关键字_id来标识他们。几乎每一个m

33、ongodb文档都使用_id字段作为第一个属性(在系统集合和定容量集合(capped collection)中有一些例外)。_id值可以是任何类型,最常见的做法是使用ObjectId类型。集合集合就是一组文档的组合。如果将文档类比成数据库中的行,那么集合就可以类比成数据库的表。在mongodb中的集合是无模式的,也就是说集合中存储的文档的结构可以是不同的,比如下面的两个文档可以同时存入到一个集合中:name:mengxiangyue Name:mengxiangyue,sex:nan当第一个文档插入时,集合就会被创建。合法的集合名集合名称必须以字母或下划线开头。集合名可以保护数字集合名称不能使

34、美元符$,$是系统保留字符。集合的名字 最大不能超过128个字符。另外,.号的使用在集合当中是允许的,它们被成为子集合(Subcollection);比如你有一个blog集合,你可以使用blog.title,blog.content或者blog.author来帮组你更好地组织集合。如下实例:db.tutorials.php.findOne()capped collectionsCapped collections 就是固定大小的collection。它有很高的性能以及队列过期的特性(过期按照插入的顺序).有点和 RRD 概念类似。Capped collections是高性能自动的维护对象的插入

35、顺序。它非常适合类似记录日志的功能 和标准的collection不同,你必须要显式的创建一个capped collection,指定一个collection的大小,单位是字节。collection的数据存储空间值提前分配的。要注意的是指定的存储大小包含了数据库的头信息。db.createCollection(mycoll,capped:true,size:100000)在capped collection中,你能添加新的对象。能进行更新,然而,对象不会增加存储空间。如果增加,更新就会失败。数据库不允许进行删除。使用drop()方法删除collection所有的行。注意:删除之后,你必须显式的重

36、新创建这个collection。在32bit机器中,capped collection最大存储为1e9(1X109)个字节。元数据数据库的信息是存储在集合中。它们使用了系统的命名空间:dbname.system.*在MongoDB数据库中名字空间.system.*是包含多种系统信息的特殊集合(Collection),如下:集合命名空间描述dbname.system.namespaces列出所有名字空间。dbname.system.indexes列出所有索引。dbname.system.profile包含数据库概要(profile)信息。dbname.system.users列出所有可访问数据库

37、的用户。dbname.local.sources包含复制对端(slave)的服务器信息和状态。对于修改系统集合中的对象有如下限制。在system.indexes插入数据,可以创建索引。但除此之外该表信息是不可变的(特殊的drop index命令将自动更新相关信息)。system.users是可修改的。system.profile是可删除的。MongoDB-连接描述在本教程我们将讨论MongoDB的不同连接方式。启动 MongoDB服务在前面的教程中,我们已经讨论了如何启动MongoDB服务,你只需要在MongoDB安装目录的bin目录下执行mongod即可。执行启动操作后,mongodb在输出

38、一些必要信息后不会输出任何信息,之后就等待连接的建立,当连接被建立后,就会开始打印日志信息。你可以使用MongoDB shell 来连接 MongoDB 服务器。你也可以使用PHP来连接mongodb。本教程我们会使用 MongoDB shell来连接Mongodb服务,之后的章节我们将会介绍如何通过php 来连接MongoDB服务。默认情况下,MongoDB的启动端口为27017。比MongoDB启动端口大1000的端口为MongoDB的web用户界面,你可以再浏览器中输入http:/localhost:28017 来访问MongoDB的web用户界面。通过shell连接MongoDB服务你

39、可以通过执行以下命令来连接MongoDB的服务。注意:localhost为主机名,这个选项是必须的:mongodb:/localhost当你执行以上命令时,你可以看到以下输出结果:如果你检查从哪里连接到MongoDB的服务器,您可以看到如下信息:最后一行(标记处),打印了你成功连接上MongoDB服务的信息。MongoDB连接命令格式使用用户名和密码连接到MongoDB服务器,你必须使用 username:passwordhostname/dbname 格式,username为用户名,password 为密码。使用用户名和密码连接登陆到默认数据库:mongodb:/mongo_admin:Ax

40、B6_w3rlocalhost/以上命令中,用户 mongo_admin使用密码AxB6_w3r连接到本地的MongoDB服务上。输出结果如下所示:使用用户名和密码连接登陆到指定数据库:连接到指定数据库的格式如下:mongodb:/mongo_admin:AxB6_w3rlocalhost/w3r更多连接实例连接本地数据库服务器,端口是默认的。mongodb:/localhost使用用户名fred,密码foobar登录localhost的admin数据库。mongodb:/fred:foobarlocalhost使用用户名fred,密码foobar登录localhost的baz数据库。mong

41、odb:/fred:foobarlocalhost/baz连接 replica pair,服务器1为服务器2为example2。mongodb:/:27017,:27017连接 replica set 三台服务器(端口 27017,27018,和27019):mongodb:/localhost,localhost:27018,localhost:27019连接 replica set 三台服务器,写入操作应用在主服务器 并且分布查询到从服务器。mongodb:/host1,host2,host3/?slaveOk=true直接连接第一个服务器,无论是replica set一部分或者主服务器或

42、者从服务器。mongodb:/host1,host2,host3/?connect=direct;slaveOk=true当你的连接服务器有优先级,还需要列出所有服务器,你可以使用上述连接方式。安全模式连接到localhost:mongodb:/localhost/?safe=true以安全模式连接到replica set,并且等待至少两个复制服务器成功写入,超时时间设置为2秒。mongodb:/host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000参数选项说明标准格式:mongodb:/username:passwordhost1:port1,hos

43、t2:port2,.,hostN:portN/database?options标准的连接格式包含了多个选项(options),如下所示:选项描述replicaSet=name验证replica set的名称。Impliesconnect=replicaSet.slaveOk=true|falsetrue:在connect=direct模式下,驱动会连接第一台机器,即使这台服务器不是主。在connect=replicaSet模式下,驱动会发送所有的写请求到主并且把读取操作分布在其他从服务器。false:在 connect=direct模式下,驱动会自动找寻主服务器.在connect=replic

44、aSet 模式下,驱动仅仅连接主服务器,并且所有的读写命令都连接到主服务器。safe=true|falsetrue:在执行更新操作之后,驱动都会发送getLastError命令来确保更新成功。(还要参考wtimeoutMS).false:在每次更新之后,驱动不会发送getLastError来确保更新成功。w=n驱动添加 w:n 到getLastError命令.应用于safe=true。wtimeoutMS=ms驱动添加 wtimeout:ms 到 getlasterror 命令.应用于safe=true.fsync=true|falsetrue:驱动添加 fsync:true 到 getlas

45、terror 命令.应用于 safe=true.false:驱动不会添加到getLastError命令中。journal=true|false如果设置wie true,同步到 journal(在提交到数据库前写入到实体中).应用于 safe=trueconnectTimeoutMS=ms可以打开连接的时间。socketTimeoutMS=ms发送和接受sockets的时间。PHP安装MongoDB扩展驱动描述本教程将向大家介绍如何在Linux、window、Mac平台上安装MongoDB扩展。Linux上安装 MongoDB PHP扩展在终端上安装你可以在linux中执行以下命令来安装Mong

46、oDB 的 PHP 扩展驱动$sudo pecl install mongo使用php的pecl安装命令必须保证网络连接可用以及root权限。安装手册如果你想通过源码来编译扩展驱动。你必须手动编译源码包,这样做的好是最新修正的bug包含在源码包中。你可以在Github上下载MongoDB PHP驱动包。访问github网站然后搜索mongo php driver(下载地址:https:/ zxvf mongodb-mongodb-php-driver-.tar.gz$cd mongodb-mongodb-php-driver-$phpize$./configure$sudo make inst

47、all如果你的php是自己编译的,则安装方法如下(假设是编译在/usr/local/php目录中):$tar zxvf mongodb-mongodb-php-driver-.tar.gz$cd mongodb-mongodb-php-driver-$/usr/local/php/bin/phpize$./configure-with-php-config=/usr/local/php/bin/php-config$sudo make install执行以上命令后,你需要修改php.ini文件,在php.ini文件中添加mongo配置,配置如下:extension=mongo.so注意:你需要

48、指明 extension_dir 配置项的路径。window上安装 MongoDB PHP扩展Github上已经提供了用于window平台的预编译php mongodb驱动二进制包(下载地址:https:/ 是运行于 Apache 服务器Thread safe(线程安全)是运行在Apache上以模块的PHP上,如果你以CGI的模式运行PHP,请选择非线程安全模式(non-thread safe)。VC9是运行于 IIS 服务器上。下载完你需要的二进制包后,解压压缩包,将php_mongo.dll文件添加到你的PHP扩展目录中(ext)。ext目录通常在PHP安装目录下的ext目录。打开php配

49、置文件 php.ini 添加以下配置:extension=php_mongo.dll重启服务器。通过浏览器访问phpinfo,如果安装成功,就会看到类型以下的信息:MAC中安装MongoDB PHP扩展驱动你可以使用autoconf安装MongoDB PHP扩展驱动。你可以使用Xcode安装MongoDB PHP扩展驱动。如果你使用 XAMPP,你可以使用以下命令安装MongoDB PHP扩展驱动:sudo/Applications/XAMPP/xamppfiles/bin/pecl install mongo如果以上命令在XMPP或者MAMP中不起作用,你需要在Github上下载兼容的预编译

50、包。然后添加 extension=mongo.so配置到你的php.ini文件中。MongoDB 数据插入描述本章节中我们将向大家介绍如何将数据插入到MongoDB的集合中。文档的数据结构和JSON基本一样。所有存储在集合中的数据都是BSON格式。BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。MongoDB数据库切换以下命令可以使用myinfo数据库:use myinfo switch to db myinfo为MongoDB数据库定义一个文档以下文档可以存储在MongoDB中:document=(user_id:ABCDBWN,password:ABCDBW

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com