一、MongDB简介

1.概念

  MongoDB是一个开源的文档型NoSQL数据库,它支持的数据模型是面向文档的,使用了类似JSON的BSON(二进制JSON)格式来存储数据,且提供了动态查询索引功能。它的出现解决了传统关系型数据库在分布式存储大规模数据****处理上的瓶颈问题。

MongoDB具有以下特点:

  • 高可用性:通过复制集(replica set)和分片集群(sharding)机制来保证数据的高可用性和横向扩展性。

  • 灵活性:MongoDB是面向文档的数据库,不需要固定的表结构,文档可以自由地插入、删除、修改,更加符合实际开发需要。

  • 高性能:MongoDB使用内存映射存储引擎,能够更快地处理海量数据,同时还支持水平扩展。

  • 安全性:MongoDB支持SSL/TLS协议进行数据传输,同时也支持RBAC(基于角色的访问控制)等安全机制。

  • 易用性:MongoDB提供了易用的命令行和GUI管理工具,可以帮助用户快速上手使用。

  • 开放性:MongoDB是一个开源项目,具有很高的可定制性和可扩展性。

在应用开发中,MongoDB通常用于数据存储分析处理。与传统关系型数据库相比,MongoDB能够更好地应对数据量大、数据结构复杂、数据类型多样的场景,可以提供更高效、更灵活的数据存储和查询方案。

二、语法

MongoDB 数据库中的数据是以文档形式存储,文档中可以嵌套子文档和数组

  1. 连接数据库
    mongo --host <hostname> --port <portnumber>
  2. 创建数据库
    use <database_name>
  3. 创建集合
    db.createCollection("<collection_name>")
  4. 插入文档
    db.<collection_name>.insert(<document>)
示例:
db.users.insert({name: "Alice", age: 20})
  1. 查询文档
    db.<collection_name>.find(<query>)
示例:
db.users.find({name: "Alice"})
  1. 更新文档
    db.<collection_name>.update(<query>, <update>)
示例:
db.users.update({name: "Alice"}, {$set: {age: 25}})
  1. 删除文档
    db.<collection_name>.remove(<query>)
示例:
db.users.remove({name: "Alice"})
  1. 聚合查询
    db.<collection_name>.aggregate(<pipeline>)
示例:
db.sales.aggregate([
  {$match: {date: {$gte: ISODate("2018-01-01")}}},
  {$group: {_id: "$product", total_sales: {$sum: "$quantity"}}},
  {$sort: {total_sales: -1}},
  {$limit: 10}
])