MongoDB

NoSQL,指的是非關係型的數據庫。
關係型數據庫遵循ACID規則,即原子性、一致性、獨立性、持久性。
非關係型數據庫遵循CAP定理,即一致性、可用性、分區容忍性。
CAP理論的核心是:一個分佈式系統不可能同時很好的滿足上面三個點,最多同時比較好的滿足其中兩個。

一、什麼是MongoDB

MongoDB 是一個基於分佈式文件存儲的數據庫,是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。
MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。

二、安裝

#進入要存放的目錄
cd /usr/local 
#下載
sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-x86_64-3.4.2.tgz
#解壓
sudo tar -zxvf mongodb-osx-x86_64-3.4.2.tgz
#重命名解壓文件
sudo mv mongodb-osx-x86_64-3.4.2.tgz mongodb
#創建數據庫存儲目錄
sudo mkdir -p /data/db
#啓動mongodb
sudo mongod
#啓動mongo
$ cd /usr/local/mongodb/bin
$ ./mongo

三、基本概念

MongoDB的集合相當於sql的表,域相當於sql的字段,文檔相當於sql的記錄行,MongoDB自動將_id字段設置爲主鍵,MongoDB不支持表關聯。

  • 文檔中的鍵/值對是有序的
  • 區分類型和大小寫
  • 文檔不能有重複的鍵
  • 文檔的鍵是字符串

集合

集合就是 MongoDB 文檔組,集合沒有固定的結構。

四、基本語法

> show dbs  //顯示所有數據庫
admin  0.000GB
local  0.000GB
> db //顯示當前數據庫對象或集合
test
> use local //切換數據庫,沒有則創建
switched to db local
> db.dropDatabase() //刪除當前數據庫
{ "dropped" : "runoob", "ok" : 1 }
> show tables/collections //查看集合
> db.createCollection("mycol", { capped : true, autoIndexId : true, size :6142800, max : 10000 } ) //創建集合mycol,固定大小,自動在 _id 字段創建索引,大小,最大文檔數
> db.mycol.drop()  //刪除集合mycol
> db.mycol.insert({name:"小紅",tags: ['mongodb', 'database', 'NoSQL'],age:10})  //向mycol集合插入數據,集合不存在則創建集合再插入,也可以把插入內容定義爲一個變量,再insert這個變量。
WriteResult({ "nInserted" : 1 })
>db.mycol.find() //查看集合
>db.mycol.update({'name':'小紅'},{'name':'小綠'},{upsert:false},{multi:false}) //更新文檔裏的一個數據,沒找到默認不添加新數據,默認更新找到的第一條數據
>db.mycol.save({數據}) //更新某個id的整個文檔,和update區分
>db.mycol.remove({name:"小綠"}) //刪除符合條件的文檔
>db.mycol.remove({}) //清空集合
>db.mycol.find().pretty() //易讀方式查詢集合
>db.mycol.find({條件1,條件2}).pretty() //條件查詢,and
>db.mycol.find({$or:[{條件1},{條件2}]}).pretty() //條件查詢,or

條件操作符

  • $gt
  • $lt
  • $gte
  • $lte
db.mycol.find({age : {$gt : 10}})  //查找age>10的文檔記錄

五、數據類型

  • 1 double
  • 2 string
  • 3 object
  • 4 array
  • 5 binary data
  • 7 object id
  • 8 boolean
  • 9 date
  • 10 null
  • 11 regular expression
  • 13 JavaScript

    指定數據類型查找:
    db.mycol.find({'name':{$type:'string'}})db.mycol.find({'name':{$type:2}})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章