MongoDB基礎

什麼是MongoDB

MongoDB是一個基於分佈式文件存儲的數據庫,它是非關係型數據庫。
它支持BSON格式。所謂的BSON格式就是一種類json的一種二進制形式的存儲格式,簡稱Binary JSON,是JSON的拓展。

什麼時候用MongoDB

  • 當數據量大
  • 數據價值低

MongoDB體系結構’

Mongodb的邏輯結構是一種層次結構,有數據庫(database)、集合(collection)、文檔(document)這三部分組成。

MongoDB MySql
database數據庫 database 數據庫
collection集合 table 表
文檔(document) row 一行數據
  • MongoDB 的文檔(document),相當於關係數據庫中的一行記錄。
  • 多個文檔組成一個集合collection 相當於 table 表

常用命令

選擇和創建數據庫

語法格式:

use 數據庫名稱

數據庫名如果不存在,就會創建數據庫。
例子:

> use spitdb
switched to db spitdb
插入文檔

語法格式

db.集合名稱.insert(數據);

例子:

 db.spit.insert({content:"插入測試",userid:"1",nickname:"小愛同學",visits:NumberInt(1000)})
查詢文檔

查詢集合的語法格式:

db.集合名稱.find()

例子

db.spit.find()

結果

{ "_id" : ObjectId("5e5d27b06b17c4e54a622c68"), "content" : "插入測試", "userid" : "1", "nickname" : "小愛同學", "visits" : 1000 }
{ "_id" : "1", "content" : "我還是沒有想明白到底爲啥出 錯", "userid" : "1012", "nickname" : "小明", "visits" : 2020 }
{ "_id" : "2", "content" : "加班到半夜", "userid" : "1013", "nickname" : "凱 撒", "visits" : 1023 }
{ "_id" : "3", "content" : "手機流量超了咋 辦?", "userid" : "1013", "nickname" : "凱撒", "visits" : 111 }
{ "_id" : "4", "content" : "堅持就是勝利", "userid" : "1014", "nickname" : "諾 諾", "visits" : 1223 }

如果想要條件查詢,那麼把條件放json裏

db.集合名稱.find({"field":條件})

例子:

db.spit.find({"userid":"1013"})

結果

{ "_id" : "2", "content" : "加班到半夜", "userid" : "1013", "nickname" : "凱 撒", "visits" : 1023 }
{ "_id" : "3", "content" : "手機流量超了咋 辦?", "userid" : "1013", "nickname" : "凱撒", "visits" : 111 }

那如果只想要查詢到的第一條怎麼辦?

db.集合名稱.findOne()

例子

db.spit.findOne({"userid":"1013"})

結果

{
        "_id" : "2",
        "content" : "加班到半夜",
        "userid" : "1013",
        "nickname" : "凱 撒",
        "visits" : 1023
}

如果你想返回指定條數的記錄,可以在find方法後調用limit來返回結果

db.集合名.find().limit(返回指定條數)

例子

db.spit.find().limit(3)

結果

{ "_id" : ObjectId("5e5d27b06b17c4e54a622c68"), "content" : "插入測試", "userid" : "1", "nickname" : "小愛同學", "visits" : 1000 }
{ "_id" : "1", "content" : "我還是沒有想明白到底爲啥出 錯", "userid" : "1012", "nickname" : "小明", "visits" : 2020 }
{ "_id" : "2", "content" : "加班到半夜", "userid" : "1013", "nickname" : "凱 撒", "visits" : 1023 }
修改文檔
db.集合名稱.update(條件,修改後的數據)

例子

原數據:{ "_id" : "2", "content" : "加班到半夜", "userid" : "1013", "nickname" : "凱 撒", "visits" : 1023 }

db.spit.update({"_id":"2"},{"content":"修改文檔"}))

結果:修改後的數據 { "_id" : "2", "content" : "修改文檔" }

我們會發現其他字段都沒了,那麼只想改變指定字段數據呢

db.集合名稱.update(條件,{$set:修改後的數據)

例子

原數據:{ "_id" : "1", "content" : "我還是沒有想明白到底爲啥出 錯", "userid" : "1012", "nickname" : "小明", "visits" : 2020 }
我們把nickname:小明->小愛

db.spit.update({"_id":"1"},{$set:{"nickname":"小愛"}})

修改後數據:
{ "_id" : "1", "content" : "我還是沒有想明白到底爲啥出 錯", "userid" : "1012", "nickname" : "小愛", "visits" : 2020 }

刪除文檔
db.集合名稱.remove(條件)
db.spit.remove({}):全部刪除
統計條數
db.集合名稱.count(條件)
模糊查詢

MongoDB的模糊查詢是通過正則表達式的方式實現的。格式爲:

/模糊查詢字符串/

例子

db.spit.find({"nickname":/小愛/})

查詢結果:
{ "_id" : ObjectId("5e5d27b06b17c4e54a622c68"), "content" : "插入測試", "userid" : "1", "nickname" : "小愛同學", "visits" : 1000 }
{ "_id" : "1", "content" : "我還是沒有想明白到底爲啥出 錯", "userid" : "1012", "nickname" : "小愛", "visits" : 2020 }
大於 小於 不等於
db.集合名稱.find({ "field" : { $gt: value }}) // 大於: field > value 
db.集合名稱.find({ "field" : { $lt: value }}) // 小於: field < value 
db.集合名稱.find({ "field" : { $gte: value }}) // 大於等於: field >= value 
db.集合名稱.find({ "field" : { $lte: value }}) // 小於等於: field <= value 
db.集合名稱.find({ "field" : { $ne: value }}) // 不等於: field != value
包含與不包含

包含使用$in操作符。

db.spit.find({userid:{$in:["1013","1014"]}})

不包含使用$nin操作符。

db.spit.find({userid:{$nin:["1013","1014"]}})
條件連接

格式

$and:[ { },{ },{ } ]

例子

查詢集合中visits大於等於1000 並且小於2000的文檔

db.spit.find({$and:[ {visits:{$gte:1000}} ,{visits:{$lt:2000} }]})

or則 同and

$or:[ { },{ },{ } ]

例子
db.spit.find({$or:[ {userid:"1013"} ,{visits:{$lt:2000} }]})
列值增長

$inc運算符來實現自增

db.spit.update({_id:"2"},{$inc:{visits:NumberInt(1)}} )
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章