mongodb简介

mongodb

NoSQL简介

NoSQL(NoSQL = Not Only SQL ),意即"不单单是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 很是突出的特色。

一个简单的文档例子以下: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 数据库中。nosql

  • 在 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() 函数查询数据:url

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)
相关文章
相关标签/搜索