zoukankan      html  css  js  c++  java
  • mongodb简介

    mongodb

    NoSQL简介

    NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",指的是非关系型的数据库

    • 代表着不仅仅是SQL
    • 没有声明性查询语言
    • 没有预定义的模式
      -键 - 值对存储,列存储,文档存储,图形数据库
    • 最终一致性,而非ACID属性
    • 非结构化和不可预知的数据
    • CAP定理 (一致性(Consistency) ,可用性(Availability) ,分隔容忍(Partition tolerance))
    • 高性能,高可用性和可伸缩性

    MongoDB简介

    • MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
    • MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

    MongoDB 概念解析

    sql mongodb
    table collection 表/集合
    row document 行/文档
    column field 字段/域
    primary_key primary_key MongoDB自动将_id字段设置为主键

    数据库

    • 一个mongodb中可以建立多个数据库。
    • MongoDB的默认数据库为"db",该数据库存储在data目录中。
    • MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
    • "show dbs" 命令可以显示所有数据的列表。
    • 执行 "db" 命令可以显示当前数据库对象或集合。
    • 运行"use"命令,可以连接到一个指定的数据库。

    文档

    • 文档是一组键值(key-value)对(即BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

    一个简单的文档例子如下:

    {"site":"www.runoob.com", "name":"菜鸟教程"}
    

    集合

    • 集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。
    • 集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
    • 当第一个文档插入时,集合就会被创建。
    • 数据库不允许进行删除。使用drop()方法删除collection所有的行。

    MongoDB 创建数据库

    • 创建数据库
    use test
    
    • 如果你想查看所有数据库,可以使用 show dbs 命令:
    show dbs
    

    结果:

    admin   0.000GB
    config  0.000GB
    local   0.000GB
    

    可以看到,我们刚创建的数据库 test 并不在数据库的列表中, 要显示它,我们需要向 test 数据库插入一些数据

    db.test.insert({"name":"菜鸟教程"})
    show dbs
    

    显示:

    admin   0.000GB
    config  0.000GB
    local   0.000GB
    test    0.000GB
    
    • MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。

    • 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

    MongoDB 删除数据库

    show dbs
    use test
    db.dropDatabase()
    show dbs
    

    结果:

    admin   0.000GB
    config  0.000GB
    local   0.000GB
    

    创建集合

    use test
    db.createCollection("runoob")
    
    • 如果要查看已有集合,可以使用 show collections 命令:
    • 在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。

    删除集合

    db.runoob.insert({'d':'333333'})
    db.runoob.drop()
    

    MongoDB 插入文档

    db.COLLECTION_NAME.insert(document)
    
    • 以下文档可以存储在 MongoDB 的 runoob 数据库 的 col 集合中:
    >db.col.insert({title: 'MongoDB 教程', 
        description: 'MongoDB 是一个 Nosql 数据库',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['mongodb', 'database', 'NoSQL'],
        likes: 100
    })
    

    以上实例中 col 是我们的集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。

    • 文档执行两次插入操作

    使用 find() 函数查询数据:

    db.col.find()
    

    显示:

    { "_id" : ObjectId("56066169ade2f21f36b03137"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
    { "_id" : ObjectId("5606616dade2f21f36b03138"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
    
    db.col.find().pretty()#美观
    

    显示:

    {
           "_id" : ObjectId("5b7f7357c98c3333acf4e0e5"),
           "title" : "MongoDB 教程",
           "description" : "MongoDB 是一个 Nosql 数据库",
           "by" : "菜鸟教程",
           "url" : "http://www.runoob.com",
           "tags" : [
                   "mongodb",
                   "database",
                   "NoSQL"
           ],
           "likes" : 100
    }
    {
           "_id" : ObjectId("5b7f735fc98c3333acf4e0e6"),
           "title" : "MongoDB 教程",
           "description" : "MongoDB 是一个 Nosql 数据库",
           "by" : "菜鸟教程",
           "url" : "http://www.runoob.com",
           "tags" : [
                   "mongodb",
                   "database",
                   "NoSQL"
           ],
           "likes" : 100
    }
    

    接下来我们移除 title 为 'MongoDB 教程' 的文档:

    db.col.remove({'title':'MongoDB 教程'})
    db.col.find()
    
    

    没数据显示了,两条数据全删除了

    • 如果你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示:
    db.col.remove({'title':'MongoDB 教程'},1)
    db.col.find().pretty()
    

    显示

    {
            "_id" : ObjectId("5b7f74e6c98c3333acf4e0e8"),
            "title" : "MongoDB 教程",
            "description" : "MongoDB 是一个 Nosql 数据库",
            "by" : "菜鸟教程",
            "url" : "http://www.runoob.com",
            "tags" : [
                    "mongodb",
                    "database",
                    "NoSQL"
            ],
            "likes" : 100
    }
    

    即只删除掉一条数据

    MongoDB 删除文档

    db.collection.remove(
       <query>,
       <justOne>
    )
    

    MongoDB 查询文档

    db.collection.find(query, projection)
    
  • 相关阅读:
    T-SQL 查询数据库中各个表的使用空间
    T-SQL 拆分使用指定分隔符的字符串(split string)
    T-SQL 去除特定字段的前导0
    T-SQL 实现行转列
    T-SQL 将存储过程结果插入到表中
    T-SQL查看数据库恢复(RESTORE)时间
    Why Do We Need a Data Warehouse?
    T-SQL 常用DDL语句
    dedecms织梦笔记
    Lua 基础简明教程
  • 原文地址:https://www.cnblogs.com/monkey-moon/p/9544497.html
Copyright © 2011-2022 走看看