
基本概念
文档是MongoDb中数据的基本单元。非常类似于关系数据库管理系统中的行(但是比行要复杂的多)
类似低,集合可以被看做是没有模式的表
MongoDb的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限
MongoDB自带简洁但功能强大的JavaScript Shell,这个工具对于管理MongoDB实例和操作数据作用非常大
每一个文档都有一个特殊的建_id,它在文档所处的集合中是唯一的
1、文档
文档的建是字符串。
键不能含有\0(空字符),这个字符用来表示键的结尾
.和$有特别的意义,只有在特定环境下才能使用。
以下划线‘_’开头的键是保留的。
MongoDB不但区分类型,也区分大小写
类型:
{'foo':3}
{'foo': '3'}
大小写:
{'foo':3}
{'FOO':3}不能有重复的键
如下文档是非法的:
{'a':'Hello', 'a':'Word'}2、集合
集合就是一组文档,如果说MongoDB中的文档类似于关系型数据库中的行,那么集合就如同表
2.1、无模式
集合是无模式的,
2.2、命名
集合名不能是空字符串''。
集合名不能含有\0(空字符)
集合名不能以‘system.’开头,装饰为系统集合保留的前缀
用户创建的集合名不能含有保留字符$2.3、数据库
多个集合组成数据库
数据库名命名规则:
不能是空字符串('')
不能含有''(空格)、.、$、/、\和\0.
应全部小写
最多64字节2.4、启动mongodb
Windows下启动:
$ mongod.exe2.5 MongoDB Shell
2.5.1、运行shell
$./mongoshell可以利用javaScript标准库
可以定义调用javaScript函数
2.5.3、shell中的基本操作
4个基本操作:创建、读取、更新和删除(CRUD)
1、创建
insert 函数添加一个文档到集合里面
post = {
title:'test',
content:'test context',
date:new Date()
}
db.blog.insert(post)2、读取
db.blog.find()返回所有的文档
db.blog.findOne()查看一个文档3、更新
update 接收(至少)两个参数
第一个是要更新文档的限定条件,
第二个是新的文档
post.comments = []
db.blog.update({title:222}, post)4、删除
remove用来从数据库中永久的删除文档
bd.blog.remove({title:'test'})2.6、数据类型
2.6.1、基本数据类型
a、null
用于表示空值或者不存在的字段
{'x':null}b、布尔
布尔类型有两个值'true'和'false':
{'x':true}c、32位整数
shell中不可用, javaScript仅支持64位浮点数, 所以32位整数会被自动转换
d、64位整数
shell也不支持该类型。shell会使用一个特殊的内嵌文档来显示64位整数
e、64位浮点数
shell中的数字都是这个类型
{'X':3.15}
{'X':3}都是浮点数
f、字符串
utf-8字符串都可表示为字符串类型的数据:
{'x':'foobar'}g、符号:
shell不支持该类型,shell将数据库里面的符号类型转成字符串
h、对象id:
对象id是文档的唯一id
{'x':objectId()}i、日期:
日期类型存储的是从标准纪元开始的毫秒数。不存储时区:
{'x':new Date()}j、正则表达式:
文档中可以包含正则表达式,采用javaScript的正则表达式语法
{'x':/foovar/i}k、代码:
文档中还可以包含javaScript代码:
{'X':function(){/*....*/}}l、二进制数据:
二进制数据可以由任意字节的串组成,不过shell中无法使用
m、最大值:
BSON包含一个特殊类型。表示可能的最大值,shell中没有这个类型
n、最小值:
BSON包含一个特殊类型,表示可能的最下值,shell中没有这个类型
o、未定义:
文档中也可以使用未定义类型(javaScript中的null和undefined是不同的类型)
{'x':undefined}p、数组:
值的集合或者列表可以表示成数组
{'x':['a','b','c']}q、内嵌文档:
文档可以包含别的文档,也可以作为值嵌入到父文档中
{'x':{'foo':'bar'}}该内容由阅读《MongoDB权威指南》整理。
评论(0)