热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDB笔记一之简介与入门【第一次编辑:排版】

煮酒品茶:大量序语和实例引用自书中,品茶对其实验后做的笔记上载至博客,任何有版权的人都可以直接下架下文章,谢谢合作。201281414:00MongoDB笔记一之简介

煮酒品茶:大量序语和实例引用自书中,品茶对其实验后做的笔记上载至博客,任何有版权的人都可以直接下架下文章,谢谢合作。2012/8/1414:00MongoDB笔记一之简介

煮酒品茶:大量序语和实例引用自书中,品茶对其实验后做的笔记上载至博客,任何有版权的人都可以直接下架下文章,谢谢合作。

2012/8/14 14:00 MongoDB笔记一之简介与入门【第一次编辑:排版】


elain2012写的MongoDB 实战系列,真心不错!

MongoDB权威指南

第一章

MongoDB是一种强大、灵活、可扩展的数据存储方式。它扩展了关系型数据库的众多有用功能,免备案空间,如辅助索引、范围查询和排序。MongoDB的功能非常丰富,比如内置的对MapReduce式聚合的支持,以及对地理空间索引的支持。

优点:

1、丰富的数据模型

MongoDB是面向文档的数据库,将原来的“行”(row),的概念换成更加灵活的“文档”(document)模型。

MongoDB没有模式:文档的键不会事先定义也不会固定不变。

2、容易扩展

采用的面向文档的数据模型使其可以自动在多台服务器之间分割数据,还可以平衡集群的数据和负载,自动重排文档,开发者可以专注于编写应用,需要更大的容量,只需在集群中添加新机器,然后让数据库来处理剩下的事。

3、丰富的功能

索引(多种快速查询,也提供了咱一的,复合的和地理空间索引能力。)

存储Javascript(开发人员不必使用存储过程了,可以直接在服务端存储Javascript的函数和值)

聚合(支持MapReduce和其它聚合工具)

固定集合(集合的大小是有上限的,对某些类型的数据【如:日志】特别有用)

文件存储(支持用一种容易使用的协议存储大型文件和文件的元数据)

4、不牺牲速度

5、简便的管理

主从复制,副本集,分片等。

第二章 入门

基本概念

----------------------------------------

文档是MongoDB中数据的基本单元。(doucument)

集合可以被看做是没有模式的表(collections)

MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限。

MongoDB自带Javascript shell,用于管理MongoDB实例和操和数据。

每一个文档都有一个特殊的键"_id",它在文档所处的集合中是咱一的。

-----------------------------------------

文档:多个键及其关联的值有序的放置在一起便是文档。(key:vlaue)

{"cwtea" : "hello","key":"vlaue"}

注:文档中键的顺序并不重要。

1、文档中的键/值对应是有序的

{"cwtea" : "hello","key":"vlaue"}和{"key":"vlaue",网站空间,"cwtea" : "hello"}完全不同

2、文档中的值可以是多种数据类型,整字,字符串,甚至文档。键可以使用任意UTF-8字符。

3、键不能含有\0(空字符),这个字符用来表示键的结尾。

4、.和$有特别的意义,只有在特定环境下才能使用。

5、以下划线"_"开头的键是保留的,香港服务器,虽然这个并不是严格要求的。

6、mongoDB区分类型和区分大小写

{"foo" : 3} 不同于{"foo" : "3"} 整数和字符串

{ "foo" : "3"}不同于{"Foo" : "3"} 大小写

7、mongoDB不能有重复的键

集合

概念:集合就是一组文档 collections


无模式

概念:不同文档可存在同一个集合中。


命名:

可以满足下列条件的任意UTF-8字符串。

1、集合名不能是空字符串""

2、集合名不能含 有\0字符(空字符),这个字符表示集合名的结尾.

3、集合名不能以"system."开发,这是为系统集合保留的前缀。

4、用户创建的集合名字不能含有保留字符$。有些驱动程序的确支持在集合名里面包含$,这是因为某些系统生成的集合中包含该字符。


子集合:

组织集合的一种惯例是使用 "." 字符分开的按命名空间划分的子集合。

GridFS是一种存储大文件的协议,使用子集合来存储文件的元数据,这样就与内容 分开了。

Web控制台通过子集合的方式将数据组织在DBTOP部分

绝大多数驱动程序都提供语法糖,为访问指定集合的子集合提供方便。

(db.blog代表blog集合,db.blog.posts代表blog.posts集合)


数据库:多个集合组成数据库。

一个MongoDB实例可承载多个数据库,它们之间可视为完全独立,每个数据库都有独立的权限控制,即便在磁盘上,不同的数据库存也放在不同的文件中。

命名:数据库名最终会变成文件系统里的文件,所以会有以下限制。

不能是空字符串("")

不得含有''(空格)、,、$、/、/和\0(空字符)

就全部是小写

最多64字节


保留的数据库名:

admin(是"root"数据库,添加一个用户到这个数据库,则具有最高权限)

local(这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合)

config(当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息)

命名空间:把数据库的名字放到集合名前面,得到就是集合的完全限定名db.blog.posts,命名空间的长度不得超过121,实际使用最好不超过100字节。

MongoDB shell

自带一个Javascript shell,可以从命令行与MongoDB实例交互,可以执行管理操作,检查运行实例,变或做其他尝试。可以做Javascript所做之事。

> math.sin(math.pi /2)

Mon Aug 13 23:28:19 ReferenceError: math is not defined (shell):1

> Math.sin(Math.PI /2)

1

> new Date("2010/1/1")

ISODate("2009-12-31T16:00:00Z")

> new Date("2010/1/1");

ISODate("2009-12-31T16:00:00Z")

> "hello ,world!".replace("world", "mongodb")

hello ,mongodb!

> "hello ,world!".replace("world1", "mongodb")

hello ,world!

> "hello ,2".replace("2", "mongodb")

hello ,mongodb

> function factorial (n) {

... if (n <=1) return 1;

... return n * factorial(n-1)

... }

> factorial(5);

120


shell的基本操作:

创建、读取、更新和删除。

创建:

> use blog

switched to db blog

> post = {"title" : "my blog post",

... "content" : "here is my blog post.",

... "date" : new Date()}

{

"title" : "my blog post",

"content" : "here is my blog post.",

"date" : ISODate("2012-08-13T16:24:51.467Z")

}

> db.blog.insert(post)

> db.blog.find()

推荐阅读
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • Abp+MongoDb改造默认的审计日志存储位置
    一、背景在实际项目的开发当中,使用AbpZero自带的审计日志功能写入效率比较低。其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起。所以我们可以重新实现A ... [详细]
  •     系统采用jeeplus框架(ssm+redis+shiro+mongodb+redis),默认是做了JSP未做前后端分离,由于业务需要已经多终端使用的需求(H5、小程序等) ... [详细]
  • mongoDB高可用集群环境搭建
    2019独角兽企业重金招聘Python工程师标准在生产环境下,部署一台mongodb服务的话,会存在以下问题:单点问题生产环境是一个 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mongodb副本集+分片集群搭建相关的知识,希望对你有一定的参考价值。环境需求: ... [详细]
  • 前面刚有AWS开战MongoDB,双方“隔空互呛”,这厢又曝出2亿+简历信息泄露——MongoDB的这场开年似乎“充实”得过分了些。长期以来,作为“最受欢迎的NoSQL数据库”,M ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • Maven构建Hadoop,
    Maven构建Hadoop工程阅读目录序Maven安装构建示例下载系列索引 序  上一篇,我们编写了第一个MapReduce,并且成功的运行了Job,Hadoop1.x是通过ant ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • Hadoop源码解析1Hadoop工程包架构解析
    1 Hadoop中各工程包依赖简述   Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。   GoogleCluster:ht ... [详细]
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
  • MR程序的几种提交运行模式本地模型运行1在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行-- ... [详细]
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
  • Hadoop——Hive简介和环境配置
    一、Hive的简介和配置1.简介Hive是构建在Hadoop之上的数据操作平台lHive是一个SQL解析引擎,它将SQL转译成MapReduce作业,并 ... [详细]
author-avatar
vivianchen1988
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有