这篇是我的读书笔记,其中有的样例摘自原书,而非原创,下文为在我的环境中的实现与练习,并包含了自己的部分理解,请知悉。

————————————————————————————
在MongoDB的SHELL中,我们可以执行很多JAVASCRIPT的命令。
它本身就是一个功能完备的JavaScript解释器,因此,可以运行任何JavaScript的代码。

简单的数学运算:

注:这里命令行中存在的一个小问题是:不管你输入什么命令,都会重复显示。

调用数学类:

时间:

定义JavaScript函数,并执行:

MongoDB的SHELL除了是一个功能完备的JavaScript解释器之外,还是一个独立的MongoDB客户端。

如果你连接到某个数据库,那么这个数据库的连接便会赋值给db变量,… 接下来,这个变量db,便是MongoDB SHELL访问MongoDB的主要入口点。

登录MongoDB后:
1. 查看我们有哪些DB
2. 选择其中一个DB

因为这个SHELL遵循的是JavaScript的语法,所以直接输入变量名,就可以将变量的值转成字符串输出。
这里,我们输入变量【db】,则我们可以看到我们当前的所在的DB:

这个类似于MySQL中的:

回到MongoDB,通过上边的db变量,可以访问其对应数据库中的集合。
在MongoDB中,这就意味着,基本上可以执行几乎所有的数据库操作了。

MongoDB的数据库 在操作数据的时候,通常会涉及到四种操作:
1. 创建
2. 读取
3. 更新
4. 删除

这个和普通的关系型数据库一样的,增删改查(CRUD)。

1. 增(创建)

Insert,用于将一个文档假如到集合中。

首先,创建一个局部变量【post】

上面的【post】是个有效的MongoDB文档,所以可以通过insert的方法保存到某个集合中:

这样,就操作成功了。

查看一下:

2. 查(读取)
其实,上面的【find】就属于【查】。
除了上面的方法,还可以通过【findOne】去查。

注意,在MongoDB SHELL中,函数是区分大小写的:

错误:不注意大小写

正确的样子:

find 和 findOne 的区别:
使用find的时候,shell自动显示最多20个匹配的文档,但可以获取更多的文档,虽然不显示。

3. 改(更新)

用update执行更新相关的操作,update至少需要两个参数:
1. 要改哪个
2. 改成什么

先在上面【post】变量中,增加【comments】键:

然后,让原来的文档,具有新增的键:

4. 删(删除)
用remove永久性的删除数据库中的某个文档。
如果不加参数,则会删除一个集合内的所有文档,这是需要非常注意的地方。

先给db.blog集合再增加一个文档:

可以看到,现在我们的集合中,有两个对象。

先看看没有参数的remove:

可以看到,所有的文档都被删除了。

把前面的文档再添加进去,然后看看添加参数的remove:

在Mongo SHELL中获得帮助:

获得DB的版本信息:

集合的名字最好不要和函数的名字重名,否则会出现异常:

假如真的有个集合的名字和函数的名字一样,那么用这种方式去访问:

一样的,可以用上面方法操作的情况还有:
1. 如果集合名称为【xxx-yyy】,如果不用上面的方法去访问,则会被解读为变量【xxx】和变量【yyy】执行减法运算

——————————————————
关于数据类型:

MongoDB支持多种数据类型作为文档中的值。

总的来说MongoDB的文档是类似于JSON的。
关于JSON,可以参考:www.json.org。

JSON的表达能力有限,只有:
1. null
2. 布尔
3. 数字
4. 字符串
5. 数组
6. 对象

其他还需要的类型(JSON的不足):
数据库:
1. 日期

文本处理:
1. 浮点数
2. 整数
3. 32位数字
4. 64位数字
5. 正则表达式

————————
MongoDB在保留JSON的特性【键值对】的基础上,增加了其他的一些数据类型。

1. null
2. 布尔
3. 32位整数
4. 64位整数
5. 64位浮点
6. 字符串
7. 符号(MongoDB SHELL,不支持符号,而是将数据库的符号类型转成字符类型或字符串类型)
8. 对象ID(文档的12字节唯一ID)
9. 日期
10. 正则表达式
11. 代码
12. 二进制数据
13. 最大值
14. 最小值
15. 未定义
16. 数组
17. 内嵌文档

————————————————————————————
To be continue。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装