mongodb 权威指南(一)

mongodb简介

  • mongodb是一个面向文档的数据库,面向文档不再有行的概念,取而代之的是更为灵活的‘文档’模型,通过文档嵌入文档和数组,面向文档的方法能够仅使用一条记录来表现复杂的层次关系。

  • 不再有预定义的模式,文档的键和值不再是固定类型和大小

数据库扩展

  • 纵向扩展
    • 是指使用能力更强的机器,缺点是大型机器昂贵,而且当数据库达到机器的物理极限时,再也没有更强的机器。
  • 横向扩展
    • 购买一台普通的服务器并把它添加到集群中。缺点,管理多台机器困难

mongodb解决数据库横向扩展中管理多台机器困难的做法

  • 面向对象的数据模型使它很容易在多台服务器之间进行数据分割,mongodb能自动处理跨集群的数据和负载,自动重新分配文档,以及将用户请求路由到正确的机器上。

mongodb基础知识

  • 文档是mongodb中数据的基本单元,类似于关系型数据库中的行,键值对的一个有序集(相同字段,字段的顺序不同,文档也不同)
  • 集合可以看做是拥有动态模式的表
  • mongodb一个实例可以拥有多个相互独立的数据库,每一个数据库都拥有自己的集合
  • 每一个文档都有一个特殊的键‘_id’,是在文档所属集合中唯一的。
  • 自带js shell 可管理mongodb的实例或数据操作

集合的动态模式

  • 一个集合中文档是可以各式各样的,虽然一个集合可以防止不同类型的文档,但是将不同类型的文档拆分为不同的集合,每次查询相应的集合,速度快很多。

集合的命名

  • 不能为空,不能包含\0 $ ,不能以system.开头
  • 子集合应使用'.'来分割不同的命名空间的子集合

数据库

  • 多个文档组成一个集合,而多个集合组成数据库

启动

  • 命令 在bin目录下运行cmd mongod --dbpath 数据库文件夹路径
  • 如果端口被占用启动失败,通常是已经有一个数据库实例在运行了

javascript shell 与 sql shell

  • 在数据库启动的情况下再次进入bin目录运行mongo,可以任意执行js的语法
  • 执行db 查看当前指向的数据库
  • 通过db变量可以访问其中的集合

shell的基本操作

  • 创建: db.集合名.insert(对象),当集合名中包含无效的javascript属性名称是可以使用db.getCollection('集合名')代替。
命令行
  • 查看: db.集合名.find()

    • find() 和 findone() find查找集合所有的文档,findone可接受一个查询文档为限制条件
  • 更新:update接受两个参数,第一个是限定条件(用于匹配待更新的文档),第二个是新的文档

    • post.comment = [1,3];
    • db.test.update({'title':'test'},post)
  • 删除 remove方法可将文档从数据库永久删除,接受限定条件文档作为参数删除,可传入一个空对象将集合所有文档删除

    • db.test.remove({'title':'test'})

基本数据类型

  • 除了基本的json格式,如:null,true,false,数值,字符串、日期、正则、数组,内嵌文档(即对象嵌套)还增加了:

    • 对象id: ObjectId("586db3fcf818ef7cc160e01d") =》 { "i" : ObjectId("586db417f818ef7cc160e01e") },是由时间戳,机器主机散列值、进程标识pid和计数器组成的12字节,每个字节存储两个十六进制数字
    • 二进制数据 二进制数据是一个任意字节的字符串,如果要将utf-8字符保存在数据库中,二进制数据是唯一的方式
  • 使用日期时始终用 new Date() 而不是将其当做普通函数调用,因为Date()调用返回的是字符串,而构造函数返回的是一个日期对象,由于日期和字符串之间无法匹配,会导致执行操作时出现很多的问题。

  • _id,每个文档必须有一个“_id”键,这个值可以是任何类型的,默认是ObjectId对象,在两个集合中可以有相同_id的文档,同一个集合中不允许,确保文档都能被唯一标识

使用shell执行脚本

  • D:\mongo\bin>mongo ../test.js
  • load('../test.js')
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容