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)
相關文章
相關標籤/搜索