• MongoDB 阶段一(安装&入门)


    介绍

     官网手册:

    The MongoDB 4.2 Manual — MongoDB Manual

    MongoDB 存储的一条记录就是一个文档:

    文档类型数据库优点:

    •  对于多种语言都有很好的支持。
    • 嵌套的文档数据减少了复杂的 join 操作,提高了性能。
    • 元数据可以动态的改变。

    版本新特性:

    • MongoDB 3.4 支持只读视图功能。
    • MongoDB 4.2 开始支持物化视图。

    高性能:

    • 对嵌入式数据模型的支持减少了数据库系统上的 I/O 活动。
    • 索引支持更快的查询,并且可以包括来自嵌入式文档和数组的键。

    水平伸缩:

    • 在集群中使用了分片的机制。
    • 在3.4以后,MongoDB 支持创建在shard key上面创建zones来均衡集群里面的数据。

    zones的意思就是,规定那个访问的数据可以到那个shard里面去,上图的意思也就是每一个shard指定一个zone区域,每一个区域里面有一定的范围,符合访问的数据到对应的shard里面去,区域不能够重叠访问,也不能够共享访问。 

    1. { "x" : 5 } --> { "x" : 10 } // Zone A
    2. { "x" : 10} --> { "x" : 20 } // Zone B
    • 如果一个文档的 shard key 的值为 7 那么它就会被路由到 zone (区域) A。
    • 如果一个文档的 shard key 的值为 10 那么它就会被路由到 zone (区域) B。

    还有一种访问就是Hashed Shard Keys and Zone Ranges:

    { "x": NumberLong("4470791281878691347") } --> { "x": NumberLong("7766103514953448109") } // Zone A
    • 上面的这一种就是Shard Keys经过Hash运算之后得到的结果访问。 

    支持多种 Storage Engines:

    安装

    官网安装说明:

    Install MongoDB Community Edition on Ubuntu — MongoDB Manual

    关键的文件:

    配置文件/etc/mongod.conf
    数据文件夹/var/lib/mongodb
    日志文件夹/var/log/mongodb

    使用

    数据库操作

    查看database

    db

    创建一个数据库

    use examples

    Collection操作

    下面创建一个 inventory 的数据 collection。

    1. db.inventory.insertMany([
    2. { item: "journal", qty: 25, status: "A", size: { h: 14, w: 21, uom: "cm" }, tags: [ "blank", "red" ] },
    3. { item: "notebook", qty: 50, status: "A", size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank" ] },
    4. { item: "paper", qty: 10, status: "D", size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank", "plain" ] },
    5. { item: "planner", qty: 0, status: "D", size: { h: 22.85, w: 30, uom: "cm" }, tags: [ "blank", "red" ] },
    6. { item: "postcard", qty: 45, status: "A", size: { h: 10, w: 15.25, uom: "cm" }, tags: [ "blue" ] }
    7. ]);
    8. // MongoDB adds an _id field with an ObjectId value if the field is not present in the document

    查询 document,下面相当于都是等值的操作

    1. db.inventory.find({})
    2. //格式化输出
    3. db.inventory.find({}).pretty()
    4. //条件查询
    5. db.inventory.find( { status: "D" } );
    6. db.inventory.find( { qty: 0 } );
    7. //下面相当于 and 操作
    8. db.inventory.find( { qty: 0, status: "D" } );
    9. //查询对象里面的数据
    10. db.inventory.find( { "size.uom": "in" } )
    11. //对象的 and 操作
    12. db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )
    13. //数组查询
    14. db.inventory.find( { tags: [ "red", "blank" ] } )
    15. //表示数组里面包含了red就能够查询出来
    16. db.inventory.find( { tags: "red" } )
    17. //条件查询,后面的{}表示 select 选着值,1 表示要返回的值,0 表示不显示值
    18. db.inventory.find( { }, { item: 1, status: 1 } );
    19. //下面的条件表示 id 不返回
    20. db.inventory.find( {}, { _id: 0, item: 1, status: 1 } );

     

  • 相关阅读:
    Redis 多机方案
    【区块链 | 预言机】从零开始使用Chainlink预言机(2)- 智能合约中使用更安全的随机数-代码实战
    python深入浅出的装饰器1
    docker-compose安装mysql主流版本及差异
    flutter vscode gradle 配置
    CentOS安装gitlab服务及创建git仓库实践笔记
    大疆图像算法面试流程
    zookeeper+kafka消息队列群集部署
    设计模式之迭代器模式
    C# 图解教程 第5版 —— 第3章 C# 编程概述
  • 原文地址:https://blog.csdn.net/S1124654/article/details/126527867