zoukankan      html  css  js  c++  java
  • mongoDB

    整理来自

    https://www.shiyanlou.com/courses/running/50

    1、简介

     MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

    2、面向集合的存储

    MongoDB 中,一个数据库包含多个集合,类似于MySql中一个数据库包含多个表;一个集合包含多个文档,类似于MySql中一个表包含多条数据。

    3、虚拟机开机配置

    启动MongoDB服务,因为mongoDB并不随系统一起启动,可能以下命令运行后会等一小段的时间才会启动完毕。

    $ sudo service mongodb start
    

    进入MongoDB命令行操作界面(可能会出现connect failed,多试几次就行),在命令行中敲exit可以退出

    $ mongo
    

    实验中的布尔类型的ture用1代替,false用0代替

     ---------------------

    基本概念

    1、数据库

    • 一个mongoDB可以创建多个数据库
    • 使用show dbs可以查看所有数据库的列表
    • 执行db命令则可以查看当前数据库对象或者集合
    • 运行use命令可以连接到指定的数据库
    $ mongo      #进入到mongo命令行
    > use test            #连接到test数据库
    

    注意:数据库名可以是任何字符,但是不能有空格、点号和$字符

    2、文档

    文档是mongoDB的核心,类似于SQLite数据库(关系数据库)中的每一行数据。多个键及其关联的值放在一起就是文档。在mongodb中使用一种类json的bson存储数据,bson数据可以理解为在json的基础上添加了一些json中没有的数据类型。

    例:

    {"company":"Chenshi keji"}

    3、文档的逻辑联系

    假设有两个文档:

    {
       "name": "Tom Hanks",
       "contact": "987654321",
       "dob": "01-01-1991"
    }#user文档
    
    {
       "building": "22 A, Indiana Apt",
       "pincode": 123456,
       "city": "chengdu",
       "state": "sichuan"
    }#address文档

    关系1:嵌入式关系:把address文档嵌入到user文档中

    {
       "name": "Tom Hanks",
       "contact": "987654321",
       "dob": "01-01-1991",
       "address":
       [{
       "building": "22 A, Indiana Apt",
       "pincode": 123456,
       "city": "chengdu",
       "state": "sichuan"
        },
        {
        "building": "170 A, Acropolis Apt",
        "pincode": 456789,
        "city": "beijing",
        "state": "beijing"
        }]
    }#这就是嵌入式的关系

    关系2:引用式关系:将两个文档分开,通过引用文档的_id字段来建立关系

    {
       "contact": "987654321",
       "dob": "01-01-1991",
       "name": "Tom Benzamin",
       "address_ids": [
          ObjectId("52ffc4a5d85242602e000000")    #对应address文档的id字段
       ]
    }#这就是引用式关系
    
    

    4、集合

    集合就是一组文档的组合,就相当于是关系数据库中的表,在mongodb中可以存储不同的文档结构的文档 例:

    {"company":"Chenshi keji"} {"people":"man","name":"peter"}
    

    上面两个文档就可以存储在同一个集合中

    
    

    5. 元数据

    数据库的信息存储在集合中,他们统一使用系统的命名空间:DBNAME.system.* DBNAME可用db或数据库名替代

    • DBNAME.system.namespaces :列出所有名字空间
    • DBNAME.system.indexs :列出所有索引
    • DBNAME.system.profile :列出数据库概要信息
    • DBNAME.system.users :列出访问数据库的用户
    • DBNAME.system.sources :列出服务器信息
    
    

    四、数据库的创建和销毁

    1、创建数据库

    启动服务后,进入 MongoDB 命令行操作界面:

    $ mongo
    

    使用 use 命令创建数据库:

    > use mydb
    

    查看当前连接的数据库:

    > db
    

    查看所有的数据库:

    > show dbs
    

    列出的所有数据库中看不到 mydb或者显示mydb(empty) ,因为 mydb 为空,里面没有任何东西,MongoDB不显示或显示mydb(empty)。

    2、销毁数据库

    使用 db.dropDatabase() 销毁数据库:

    > use local
     switched to db local
    > db.dropDatabase()
    

    查看所有的数据库:

    > show dbs

    五、集合(collection)的创建和删除

    1、创建集合

    在数据库 mydb 中创建一个集合

    > use mydb
    switched to db mydb
    > db.createCollection("users")
    

    查看创建的集合:

    > show collections
    

    2、删除集合

    删除集合的方法如下:(删除 users 集合)

    > show collections
    > db.users.drop()
    

    查看是否删除成功:

    > show collections
     

    六、向集合中插入数据

    1、使用 insert()

    插入数据时,如果 users 集合没有创建会自动创建。

    > use mydb
    switched to db mydb
    > db.users.insert([
    ... { name : "jam",
    ... email : "jam@qq.com"
    ... },
    ... { name : "tom",
    ... email : "tom@qq.com"
    ... }
    ... ])
    

    2、使用 save()

    插入数据时,如果 users 集合没有创建会自动创建。

    > use mydb2
    switched to db mydb2
    > db.users.save([
    ... { name : "jam",
    ... email : "jam@qq.com"
    ... },
    ... { name : "tom",
    ... email : "tom@qq.com"
    ... }
    ... ])


  • 相关阅读:
    MaltReport2:通用文档生成引擎
    PostgreSQL 10 如何使用 PgAdmin3
    Stackoverflow 珠玑:C#封装重试指定次数的功能
    C# 6 元组应用 Part 2:C# 也玩模式匹配
    C# 6 元组应用 Part 1:方便的字典工厂方法
    Stackoverflow 珠玑:用于分组的 LINQ 扩展方法
    Linux 下的 PostgreSQL 数据库+文件通用自动备份脚本
    让 Odoo POS 支持廉价小票打印机
    NopCommerce 根据手机浏览器和桌面浏览器切换 Theme
    为什么 C# 比 C++ 编译快那么多
  • 原文地址:https://www.cnblogs.com/wind90/p/4605777.html
Copyright © 2011-2022 走看看