MongoDB 学习笔记

来源:互联网 发布:mac版office破解 编辑:程序博客网 时间:2024/05/29 10:55

MongoDB是由C++语言编写的,是一个基于分布式文件存储、介于关系型数据库和非关系型数据库之间的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB将数据存储为一个文档,数据结构由键值对组成。MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。


相关概念:

  • 数据库

    数据库是一个集合的物理容器。一个单一的MongoDB服务器通常具有多个数据库。

  • 集合

    集合是一组MongoDB的文档。它与关系型数据库中的表类似。集合存在于数据库中,无固定模式,即集合中的文档可以具有不同的字段。通常情况下,将具有相关类型和目的的文档存储在一个集合中。

  • 文档

    文档是一组键值对。它与关系型数据库中表的一行记录类似,不同的是文档具有动态模式。动态模式是指,存储在同一个集合中的文件不必具有相同的文档字段或结构,并且相同的字段在不同的文档中也可以存储不同类型的数据。


示例文档:

{    "_id" : {        "$oid" : fa20fb3331b80929ecefe2b0    },    "title" : "蝶恋花",    "content" : "笑渐不闻声渐悄,多情却被无情恼",    "tags" : ["宋词","苏轼","蝶恋花"],    "likes" : 100,    "comments" : [        {            "user" : "俞彦",            "message" : "古人好词,即一字未易弹,亦未易改",            "createdDate" : new Date(2011,1,20,2,15)        },        {            "user" : "俞陛云",            "message" : "絮飞花落,每易伤春,此独作旷达语",            "createdDate" : new Date(2011,1,25,7,45)        }    ]}

在关系型数据库中,上述文档需要设计3张表:articles,tags,comments。


在Windows上安装MongoDB:

  1. 从官网下载安装文件并安装,安装路径:D:\MongoDB\Server\3.4

  2. 在D:\MongoDB\Data路径下创建db目录,用于存放数据库文件

  3. 在D:\MongoDB\Data路径下创建log目录,用于存放日志文件

  4. 在D:\MongoDB\Data\log路径下创建mongo.log文件,用于输出日志

  5. 在D:\MongoDB\Server\3.4路径下创建mongo.conf文件,用于保存配置信息,配置信息如下:

    # 数据库路径dbpath=D:\MongoDB\Data\db# 日志文件输出路径logpath=D:\MongoDB\Data\log\mongo.log# 是否启用日志文件,默认启用journal=true# 是否过滤无用的日志信息quiet=true# 错误日志采用追加模式logappend=true# 端口号port=27017
  6. 注册MongoDB服务

    使用管理员身份打开命令行工具,进入D:\MongoDB\Server\3.4\bin目录下,输入如下命令:

    mongod --config "D:\MongoDB\Server\3.4\mongo.conf" --install --serviceName "MongoDB"
  7. 启动MongoDB服务

    使用管理员身份打开命令行工具,进入D:\MongoDB\Server\3.4\bin目录下,输入如下命令:

    net start MongoDB
  8. 停止MongoDB服务

    使用管理员身份打开命令行工具,进入D:\MongoDB\Server\3.4\bin目录下,输入如下命令:

    net stop MongoDB
  9. 注销MongoDB服务

    使用管理员身份打开命令行工具,进入D:\MongoDB\Server\3.4\bin目录下,输入如下命令:

    mongod.exe --remove --serviceName "MongoDB"

常用操作:

启动MongoDB服务后,进入D:\MongoDB\Server\3.4\bin目录下,输入如下命令:

mongo

显示如下界面后即可开始进行数据库操作:

mongo

1.数据库常用操作:

  • 查看数据库操作命令

    db.help()
  • 查看当前数据库

    dbdb.getName()

    查看当前数据库

  • 查看数据库列表

    show dbs
  • 连接指定数据库,如果指定数据库不存在则创建一个新的数据库。新建的数据库并不会立即显示在数据库列表中,需要进行一些操作(例如:db.createCollection("user"))后才能创建成功。

    use <dbname>
  • 删除当前数据库

    db.dropDatabase()db.runCommand({"dropDatabase" : 1})

    这里写图片描述

  • 查看数据库中的集合列表

    db.getCollectionNames()show collections

2.集合常用操作:

  • 创建集合

    db.createCollection(name, {size : ..., capped : ..., max : ...})
    参数 类型 描述 name String 指定要创建的集合的名称 size 整型 (可选)指定上限集合的最大大小(以字节为单位)。如果capped为true,需指定此字段的值。 capped Boolean (可选)如果为true,则启用封闭的集合。上限集合是固定大小的集合,在达到其最大大小时自动覆盖其最旧的条目。如果指定为true,则还需指定size参数。 max 数字 (可选)指定上限集合中允许存在的最大文档数。

   在MongoDB 中,不需要显式的创建集合。

   当插入文档时,MongoDB 会自动创建集合。

  • 删除集合

    db.<collectionName>.drop()db.runCommand({"drop", "roles"})

    删除集合

3.文档常用操作:

  • 创建文档

    db.<collectionName>.insert(document)//3.2以上版本db.<collectionName>.insertOne(document)//3.2以上版本db.<collectionName>.insertMany([document], [document]...)db.<collectionName>.save(document)

    在插入的文档中,如果不指定_id参数,MongoDB会为此文档分配一个唯一的ObjectId。_id为12个字节长度的十六进制数。12字节划分如下:

    _id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)

    插入文档

    如果插入文档的_id已经存在,insert()将不做操作并提示错误,save()则会修改原来的内容为新内容。

    插入文档

  • 删除所有文档

    db.<collectionName>.remove({})//3.2以上版本db.<collectionName>.deleteMany({})

    从一个集合中删除所有文档,使用drop()方法删除整个集合,包括索引,然后重建该集合和索引或许会更高效。

  • 删除满足条件的所有文档

    db.users.remove({"status" : "disabled"})db.users.deleteMany({"status" : "disabled"})

    删除users集合中status字段为disable的所有文档。

    对于大量的删除操作,将要保留的文档复制到一个新的集合然后使用 db.<collectionName>.drop() 方法删除原集合或许会更高效。

  • 仅删除一个满足条件的文档

    db.users.deleteOne({"status" : "disabled"})

    使用db.<collectionName>.remove()方法并将<justOne>参数设置为true1.

    db.users.remove({"status" : "disabled"}, 1)db.users.remove({"status" : "disabled"}, true)

    仅删除一个满足条件的文档