好好学习,天天向上

MongoDB初识之基本概念及安装使用

一些概念

  • MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限
  • 每一个文档都有一个特殊的键"_id",它在文档所处的集合中是唯一的

文档

文档是MongoDB中数据的基本单元,类似于关系数据库中的行。多个键及其关联的值有序地放置在一起便是文档。 例如:{"greeting": "hello, ele~", "foo":3} 1. 文档中的键/值对是有序的。 2. 文档不但区分类型,也区分大小写 3. 文档不能有重复的键

集合

集合就是一组文档,可以被看做没有模式的表 1. 集合是无模式的,因此一个集合里面的文档可以使各种各样的。 2. 可以用名字来标识集合 * 组织集合的一种惯例是使用“.”字符分开的按命名空间划分的子集合

数据类型

  • null
  • 布尔(true/false)
  • 32位整数、64位整数、64位浮点数
  • 字符串、符号
  • 对象id: {"x": ObjectId()}
    1. "_id"的默认类型
    2. 使用12字节的存储空间。前4个字节是从标准纪元开始的时间戳,接下来的3字节是所在主机的唯一标识符,接下来的2字节来自产生ObjectId的进程标识符。这9个字节保证了同一秒钟不同机器不同进程产生的ObjectId是唯一的。最后3个字节是一个自动增加的计数器,确保相同进程同一秒产生的ObjectId也是不一样的。
  • 日期: {"x": new Date()}
  • 正则表达式
  • 代码
  • 二进制数据
  • 最大值、最小值
  • 未定义:{"x": undefined}
  • 数组: {"x": ["a", "b", "c"]}
  • 内嵌文档:{"x": {"foo": "bar"}}

安装与启动

安装(Windows)

step 1 MongoDB官网上直接选择对应的版本即可。 step 2 下载后解压

启动(Windows)

step 1 新建目录:E:\data\db 这里,由于我的MongoDB是解压在E盘的,所以在E盘创建此目录。

* 注意,若此目录不存在或者不可写,会导致启动失败。

step 2 进入MongoDB解压路径后, CMD窗口执行:.\bin>mongod.exe

运行MongoDB shell

.\bin>mongo * 由于shell会在启动时自动连接MongoDB服务器,因此在使用shell之前需确保mongod已正常启动。 * 启动后,shell会连到MongoDB服务器的test数据库,并将这个数据库连接赋值给全局变量db * 选择使用的数据库

1
2
3
4
5
6
> db
test
> use foobar
switched to db foobar
> db
foobar
## shell中的基本操作 1. 创建
1
2
3
4
5
6
7
8
9
10
11
12
# 创建一个局部变量post
> post = {"title":"My Blog",
... "content":"Here is my blog post.",
... "date":new Date()}
{
"title" : "My Blog",
"content" : "Here is my blog post.",
"date" : ISODate("2015-11-10T12:32:12.975Z")
}
# 将post保存到blog集合中
> db.blog.insert(post)
WriteResult({ "nInserted" : 1 })
2. 读取
1
2
3
4
5
6
7
8
9
10
11
# 调用集合的find方法查看所有文档
> db.blog.find()
{ "_id" : ObjectId("5641e3d7245065418bab4329"), "title" : "My Blog", "content" : "Here is my blog post.", "date" : ISODate("2015-11-10T12:32:12.975Z") }
# 查看集合中的一个文档
> db.blog.findOne()
{
"_id" : ObjectId("5641e3d7245065418bab4329"),
"title" : "My Blog",
"content" : "Here is my blog post.",
"date" : ISODate("2015-11-10T12:32:12.975Z")
}
3. 更新
1
2
3
4
5
6
7
8
> post.comments = []
[ ]
# updaet接受至少两个参数:第一个是要更新文档的限定条件,第二个是新的文档
> db.blog.update({title:"My Blog"}, post)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.blog.find()
{ "_id" : ObjectId("5641e3d7245065418bab4329"), "title" : "My Blog", "content" : "Here is my blog post.", "date" : ISODate("2015-11-10T12:32:12.975Z"), "comments" : [ ] }
>
4. 删除
1
2
3
4
5
6
7
# remove用来永久性删除文档
# 如果参数是一个空的字典,会删除一个集合内的所有文档
# remove也可以接受一个文档以指定限定条件
> db.blog.remove({title:"My Blog"})
WriteResult({ "nRemoved" : 1 })
> db.blog.find()
>
5. 其他
1
2
3
4
5
6
7
8
9
10
11
# 查看shell的帮助
> help
# 查看数据库级别的命令的帮助
> db.help()
# 查看集合相关的帮助
> db.foo.help()
# 了解函数功能
> db.foo.update
# 当有属性与目标集合同名时,可以使用getCollection函数
> db.getCollection("version")
foobar.version

请言小午吃个甜筒~~