博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB权威指南——入门
阅读量:6608 次
发布时间:2019-06-24

本文共 3331 字,大约阅读时间需要 11 分钟。

hot3.png

MongoDB权威指南第二章 入门文档是MongoDB中数据的基本单元,类似于RDBS中的行。集合可以看作是没有模式的表。MongoDB中单个实例可以容纳多个独立的数据库。MongoDB带有JavaScript shell。每一个文档都有一个特殊键"_id",它在文档所处的集合是唯一的。2.1 文档多个键及其关联的值有序的放在一起就是文档。在JavaScript中文档表示对象。{"greeting" : "hello world"}文档的键是字符串。键可以使用任意UTF-8字符。MongoDB不区分类型,也不区分大小写。但是不能有重复的键。2.2 集合集合就是一组文档。2.2.1 无模式集合是无模式的。意味着集合里面的文档可以是各种各样的。把同种类型的文档放在一个集合里面,这样数据会更集中。当创建索引时,文档会有附加的结构。索引是按照集合来定义的,2.2.2 命名集合不能为空。集合名不能以"system."开头,这是系统集合保留的前缀。用户创建的集合名称不能包含保留字符$。子集合组织集合惯例使用"."字符分开的按命名空间划分的子集合。假如博客系统包含两个集合,分别为blog.posts和blog.authors。blog这个集合与其子集合没有任何关系。很多MongoDB工具包含了子集合。GridFS是一种存储大文件的协议,使用子集合来存储文件的元数据。MongoDB的web控制台通过子集合的方式将数据组织在DBTOP部分绝大多数驱动程序都提供了语法糖,为访问指定集合的子集合提供方便。2.3 数据库MongoDB中的多个文档组成集合,同样多个集合可以组成数据库。数据库的名字标识不能是空字符串,不能有空格,$,/,\等,全部小写,最多64字节。有些数据库名是保留的。admin:相当于具有root权限的数据库。local:这个数据永远不会复制,用来存储本地单台服务器的任意集合。config:当MongoDB用来分片设置时,config数据库在内部使用,用于保存分片的信息。把数据名放在集合名前,得到集合的完全限定名,成为命名空间。命名空间应小于100字节。2.4 启动MongoDBMongoDB启动了一个基本的HTTP服务器,监听端口比主端口高1000。可以通过浏览器访问http://localhost:28017获取数据库的管理信息。2.5 MongoDB shellMongoDB自带JavaScript shell。2.5.1 运行shellshell完全具备javascript解释器:> x = 200;200> x / 540可以利用js标准库:> Math.sin(Math.PI/2);1> new Date();ISODate("2014-02-26T12:43:42.516Z")> "hello, world".replace("world", "caoqing");hello, caoqing> 可以定义和利用js函数:> function factial(n) {... if (n <= 1) return 1;... return n * factial(n-1);... }> factial(5);1202.5.2 MongoDB客户端shell还有非js语法的扩展,方便习惯SQL shell的用户添加。2.5.3 shell中的基本操作创建,读取,更新和删除(CRUD)。1.创建insert函数添加文档到集合。> post = ({name : "caoqing", age : 25, address : "china", date : new Date() }){        "name" : "caoqing",        "age" : 25,        "address" : "china",        "date" : ISODate("2014-02-26T12:48:09.225Z")}> db.blog.insert(post);> db.blog.find();{ "_id" : ObjectId("530de294a5a40b4574eaa3b7"), "name" : "caoqing", "age" : 25, "address" : "china", "date" : ISODate("2014-02-26T12:48:09.225Z") }2.读取find会返回集合里的所有文档,若只想查询一个,使用findOne:> db.blog.findOne();{        "_id" : ObjectId("530de294a5a40b4574eaa3b7"),        "name" : "caoqing",        "age" : 25,        "address" : "china",        "date" : ISODate("2014-02-26T12:48:09.225Z")}find和findOne可以接受查询文档形式的限定条件。3.更新update接受至少两个参数,要更新文档的限定条件,新的文档。> post.comments = [][ ]> db.blog.update({name : "caoqing"}, post);> db.blog.find();{ "_id" : ObjectId("530de294a5a40b4574eaa3b7"), "name" : "caoqing", "age" : 25, "address" : "china", "date" : ISODate("2014-02-26T12:48:09.225Z"), "comments" : [ ] }4.删除remove用来从数据库中永久地删除文档。可以接受一个限定条件,在不使用参数情况下,会删除集合里的所有文档。> db.blog.remove({name : "caoqing"});> db.blog.find();> 2.5.4 使用js shellhelp查看在线文档。db.help(),查看数据库级别的命令。db.foo.help(),查看集合级别的命令。不输入括号情况下,可以查看该函数的js源代码。> db.version;function (){    return this.serverBuildInfo().version;}集合名如果集合名是数据库类的一个属性就有问日了,只有js找不到指定属性时,才能作为集合返回。当有属性与目标集合名重名时,可以使用getCollection函数。2.6 数据类型2.6.1 基本的数据类型JSON的表现力很强,只有null,布尔,数字,字符串和数组,对象几种类型。MongoDB在此基础上添加了一些其他数据类型。对象ID,日期,正则表达式,代码,二进制数据,最大值,未定义,数组,内嵌文档2.6.2 数字MongoDB有三种数组,32位浮点数,64位浮点数和32位整数。要插入的64位整数不能准确的作为双精度数显示。2.6.3 日期Date对象用做MongoDB的日期类型。字符串和日期不能互相匹配。2.6.4 数组数组是一组值,可以作为有序对象,或无序对象操作。2.6.5 内嵌文档2.6.6 _id和ObjectIdMongoDB中存储的文档必须有一个"_id"键,每个键的值是任意类型的,一个集合中只有一个。1. ObjectIdObjectId使用十二个字节的存储空间,每个字节两位十六进制数字,是一个24位的字符串。12个字节:4位时间戳,三位机器码,2位PID,三位计数器。前4个字节隐含了文档的创建时间。3字节是所在主机的唯一标识符。接下来的两个字节是该进程标识符。后三个字节是一个计数器。2. 自动生成OjectId系统会自动帮你创建一个,但是通常在客户端由驱动程序完成。避免产生开销。驱动程序提供更加丰富的API。

转载于:https://my.oschina.net/u/1449160/blog/203583

你可能感兴趣的文章
oracle中decode函数
查看>>
linux系统运维企业常见面试题集合(三)
查看>>
Oracle查询表名及模糊查询
查看>>
Spark 实现自己的RDD,让代码更优雅
查看>>
PHP 精确运算
查看>>
Python基础-Python流程控制
查看>>
Windows Server 2012体验之卸载额外域控制器
查看>>
MySQL主从同步配置实现数据库备份
查看>>
单例设计模式
查看>>
监控Squid的开源工具MySAR
查看>>
linux解压 tar命令
查看>>
安装VMtools失败如何解决
查看>>
添加国际化文件
查看>>
iOS APP提交上架最新流程
查看>>
530A - UART
查看>>
华为服务器虚拟化部署
查看>>
1.3 Illustrator工作区的操作讲解
查看>>
MySQL服务器学习笔记!(一) ——数据库相关概念
查看>>
Eclipse 常用的快捷键及其他常用功能小结
查看>>
redis 分页查询
查看>>