MongoDB的入门与特性了解

Posted on 2013-01-09 20:53  chace0120  阅读(210)  评论(0编辑  收藏  举报

1.  Windows平台下的MongoDB的安装与运行

从MongoDB的官网上下载好.zip的压缩包,有32位和64位的,根据自己的需要进行选择。将下载好的压缩包解压到指定的目录下,然后在该目录所在路径的根目录下创建MongoDB所用的数据目录,例如你的MongoDB解压到了D盘,那么你需要创建D:\data\db作为数据目录,这样创建的数据目录是MongoDB默认使用的。

当然也可以在系统其他的任何位置创建数据目录,但在启动MongoDB时就需要指定数据目录路径。打开cmd命令行窗口,输入相应的命令,即可运行MongoDB服务。

假如我把MongoDB目录解压到了D盘,运行MongoDB的命令如下:

1 D:\mongodb-win32-x86_64-2.2.2\bin>mongod.exe

如果你没有使用MongoDB默认使用的数据目录,那么运行MongoDB的命令如下:

1 D:\mongodb-win32-x86_64-2.2.2\bin>mongod.exe --dbpath C:\Documents and Settings\Username\My Documents\db

在Windows平台下,MongoDB可以作为服务进行安装。所需命令如下:

1 D:\mongodb-win32-x86_64-2.2.2\bin>mongod.exe --logpath D:\mongoDB_log\mongodb.log --serviceName MongoDB –install

注意:--install这个命令必须和—logpath一起使用。Win7环境下需要以管理员的身份运行cmd命令行,才能安装服务成功。

MongoDB作为服务安装成功后,就可以在控制面板中启动或停止服务了。

2.  MongoDB的快速理解

MongoDB与传统的关系型数据库相比,展现形式不同,特性也不一样,但对基本概念的理解是相通的。

①     文档

文档是MongoDB中数据的基本单元。类似于关系数据库管理系统中的行,即记录。(但是比行要复杂得多)。

文档的表现形式:{“greeting” : “Hello, World”},当然文档中也可以包含多个键/值对。

文档的键是字符串,键名需要是UTF-8字符串。

注意:文档中的键/值对是有序的,如果两个文档所含有的键/值对相同,但顺序不同的话,那么这两个文档是不相同的。文档中的键/值对区分大小写和类型。例如{“foo” : 3}和{“foo” : “3”}是不同的,{“foo” : “3”}和{“Foo” : “3”}也是不同的。

②     集合

集合是一组文档,如同无模式的表。无模式就是指一个集合里面的文档可以是各式各样的。例如一个集合里包含的文档可以如下所示:

1 {“greeting” : “Hello, World”}
2 {“foo” : 5}

集合名需要是UTF-8字符串。

③     子集合

组织集合的一种惯例是使用“.”字符分开的按命名空间划分的子集合。例如,一个带有博客功能的应用可能包含两个集合,分别是blog.posts和blog.authors。这样做的目的是为了使组织结构更好些,也就是说blog这个集合(这里根本就不需要存在)及其子集合没有任何关系。

④     数据库

多个集合可以组成数据库,一个MongoDB实例可以承载多个数据库,它们之间可视为完全独立的,不同的数据库也放置在不同的文件。

数据库名需要是UTF-8字符串,最多64字节。

把数据库的名字放到集合前面,得到就是集合的完全限定名,称之为命名空间。例如,如果你在cms数据库中使用blog.posts集合,那么这个集合的命名空间cms.blog.posts。命名空间的长度不得超过121字节,在实际使用中应该小于100字节。

3.  MongoDB的管理信息和客户端

默认情况下,MongoDB监听27017端口。MongoDB还会启动一个非常基本的HTTP服务器,端口号是28017,可以通过浏览器访问http://localhost:28017来获取数据库的管理信息。

MongoDB客户端:MongoDB shell。

启动shell的命令:D:\mongodb-win32-x86_64-2.2.2\bin>mongo.exe

shell的特点:功能完备的javascript shell,可以运行任何javascript程序,可以充分利用javascript的标准库,还可以定义和调用javascript函数。

开启shell的时候会连到MongoDB服务器的test数据库,并将这个数据库连接赋值给全局变量db。这个变量是通过shell访问MongoDB的主要入口点。假如想要shell启动时连接到users数据库,命令如下:

1 D:\mongodb-win32-x86_64-2.2.2\bin>mongo.exe users

4.  MongoDB基本的CRUD操作

在blog集合里面创建一条文档:

1 >db.blog.insert({“title” : “My Blog Post”, “content” : “Here’s my blog post”})

查看blog集合中的一个文档(多个文档时选第一个):

1 >db.blog.findOne()

查看blog集合中的所有文档:

1 >db.blog.find()

find()和findOne()可以接受查询文档形式的限定条件。例如查看title为“My Blog Post”的blog文档,命令如下:

1 >db.blog.find({“title” : “My Blog Post”});

更改一个文档:

1 >post = {“title” : “My Blog Post”, “content” : “Here’s my blog post”, “date” : new Date()}
2 ……
3 >db.blog.update({“title” : “My Blog Post”}, post)

删除一个文档:

1 >db.blog.remove({“title” : “My Blog Post”})

若集合名与数据库类的属性同名时,可以使用getCollection函数,例如:

1 >db.getCollection(“version”);

5.  MongoDB的基本数据类型

①     null:

1 {“x” : null}

②     布尔:

1 {“x” : true}

③     32位整数:

Shell中不支持,由于JavaScript仅支持64位浮点数,所以32位整数会被自动转换。

④     64位整数:

Shell也不支持这个类型。shell会使用一个特殊的内嵌文档来显示64位整数。

⑤     64位浮点数:

Shell中的数字都是这种类型。例如:

1 {“x” : 3.14}
2 {“x” : 3}

⑥     字符串:

UTF-8字符串都可以表示为字符串类型的数据:

1 {“x” : “foobar”}

⑦     符号:

Shell不支持这种类型。Shell将数据库里的符号类型转换成字符串。

⑧     对象id:

对象id是文档的12字节的唯一ID。

1 {“x” : ObjectId()}

⑨     日期:

1 {“x” : new Date()}

⑩     正则表达式:

文档中可以包含正则表达式,采用JavaScript的正则表达式语法:

1 {“x” : /foobar/i}

⑪     代码:

文档中还可以包含JavaScript代码:

1 {“x” : function() { /**/ }}

⑫     二进制数据:

二进制数据可以由任意字节的串组成。不过shell中无法使用。

⑬     最大值和最小值

很抽象,待考证。

⑭     未定义:

JavaScript中null和undefined是不同的类型。

1 {“x” : undefined}

⑮     数组:

1 {“x” : [“a”, “b”, “c”]}

⑯     内嵌文档:

1 {“x” : {“foo” : “bar”}}

 

Copyright © 2024 chace0120
Powered by .NET 8.0 on Kubernetes