欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MongoDB 学习笔记

程序员文章站 2024-01-23 10:28:16
...

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

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

MongoDB 学习笔记

1.数据库常用操作:

  • 查看数据库操作命令

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

    db
    
    db.getName()

    MongoDB 学习笔记

  • 查看数据库列表

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

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

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

    MongoDB 学习笔记

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

    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"})

    MongoDB 学习笔记

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)

    MongoDB 学习笔记

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

    MongoDB 学习笔记

  • 删除所有文档

    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)

    MongoDB 学习笔记