搜尋
首頁資料庫mysql教程 MongoDB笔记一之简介与入门【第一次编辑:排版】

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

... 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()

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
您可以使用哪些工具來監視MySQL性能?您可以使用哪些工具來監視MySQL性能?Apr 23, 2025 am 12:21 AM

如何有效監控MySQL性能?使用mysqladmin、SHOWGLOBALSTATUS、PerconaMonitoringandManagement(PMM)和MySQLEnterpriseMonitor等工具。 1.使用mysqladmin查看連接數。 2.用SHOWGLOBALSTATUS查看查詢數。 3.PMM提供詳細性能數據和圖形化界面。 4.MySQLEnterpriseMonitor提供豐富的監控功能和報警機制。

MySQL與SQL Server有何不同?MySQL與SQL Server有何不同?Apr 23, 2025 am 12:20 AM

MySQL和SQLServer的区别在于:1)MySQL是开源的,适用于Web和嵌入式系统,2)SQLServer是微软的商业产品,适用于企业级应用。两者在存储引擎、性能优化和应用场景上有显著差异,选择时需考虑项目规模和未来扩展性。

在哪些情況下,您可以選擇SQL Server而不是MySQL?在哪些情況下,您可以選擇SQL Server而不是MySQL?Apr 23, 2025 am 12:20 AM

在需要高可用性、高級安全性和良好集成性的企業級應用場景下,應選擇SQLServer而不是MySQL。 1)SQLServer提供企業級功能,如高可用性和高級安全性。 2)它與微軟生態系統如VisualStudio和PowerBI緊密集成。 3)SQLServer在性能優化方面表現出色,支持內存優化表和列存儲索引。

MySQL如何處理角色集和碰撞?MySQL如何處理角色集和碰撞?Apr 23, 2025 am 12:19 AM

mySqlManagesCharacterSetsetSandCollat​​ionsyutusututf-8asthEdeFault,允許ConfigurationAtdataBase,table和columnlevels,AndrequiringCarefullageLignmentToavoidMismatches.1)setDefeaultCharactersetTercharactersetEtCollacterSeteTandColletationForAdataBase.2)conformentcollecharactersettersetertersetcollat​​ertersetcollat​​ioncollat​​ion

MySQL中有什麼觸發器?MySQL中有什麼觸發器?Apr 23, 2025 am 12:11 AM

MySQL觸發器是與表相關聯的自動執行的存儲過程,用於在特定數據操作時執行一系列操作。 1)觸發器定義與作用:用於數據校驗、日誌記錄等。 2)工作原理:分為BEFORE和AFTER,支持行級觸發。 3)使用示例:可用於記錄薪資變更或更新庫存。 4)調試技巧:使用SHOWTRIGGERS和SHOWCREATETRIGGER命令。 5)性能優化:避免複雜操作,使用索引,管理事務。

您如何在MySQL中創建和管理用戶帳戶?您如何在MySQL中創建和管理用戶帳戶?Apr 22, 2025 pm 06:05 PM

在MySQL中創建和管理用戶賬戶的步驟如下:1.創建用戶:使用CREATEUSER'newuser'@'localhost'IDENTIFIEDBY'password';2.分配權限:使用GRANTSELECT,INSERT,UPDATEONmydatabase.TO'newuser'@'localhost';3.修正權限錯誤:使用REVOKEALLPRIVILEGESONmydatabase.FROM'newuser'@'localhost';然後重新分配權限;4.優化權限:使用SHOWGRA

MySQL與Oracle有何不同?MySQL與Oracle有何不同?Apr 22, 2025 pm 05:57 PM

MySQL適合快速開發和中小型應用,Oracle適合大型企業和高可用性需求。 1)MySQL開源、易用,適用於Web應用和中小型企業。 2)Oracle功能強大,適合大型企業和政府機構。 3)MySQL支持多種存儲引擎,Oracle提供豐富的企業級功能。

與其他關係數據庫相比,使用MySQL的缺點是什麼?與其他關係數據庫相比,使用MySQL的缺點是什麼?Apr 22, 2025 pm 05:49 PM

MySQL相比其他關係型數據庫的劣勢包括:1.性能問題:在處理大規模數據時可能遇到瓶頸,PostgreSQL在復雜查詢和大數據處理上表現更優。 2.擴展性:水平擴展能力不如GoogleSpanner和AmazonAurora。 3.功能限制:在高級功能上不如PostgreSQL和Oracle,某些功能需要更多自定義代碼和維護。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),