【MongoDB詳細使用教程】一、Mac安裝MongoDB
【MongoDB詳細使用教程】二、MongoDB基本操作
【MongoDB詳細使用教程】三、高級查詢
【MongoDB詳細使用教程】四、python操作MongoDB
【MongoDB詳細使用教程】五、MongoDB的資料庫管理
目錄
- 1、資料型別
- 2、資料庫操作
- 3、集合操作
- 4、資料操作
- 4.1、增
- 4.2、查
- 4.3、改
- 4.3.1、修改整行
- 4.3.2、修改指定欄位的值
- 4.4、刪
1、資料型別
| MongoDB常見型別 | 說明 |
|---|---|
| Object ID | 檔案ID |
| String | 字串,最常用,必須是有效的UTF-8 |
| Boolean | 存盤一個布林值,true或false |
| Integer | 整數可以是32位或64位,這取決于服務器 |
| Double | 存盤浮點值 |
| Arrays | 陣列(js)或串列(python),多個值存盤到一個鍵 |
| Object | 用于嵌入式的檔案,即一個值為一個檔案 |
| Null | 存盤Null值 |
| Timestamp | 時間戳 |
| Date | 存盤當前日期或時間的UNIX時間格式 |
2、資料庫操作
| 命令 | 操作 |
|---|---|
| show dbs | 顯示資料庫串列 |
| db | 顯示當前資料庫 |
| use 資料庫名 | 切換或創建資料(有則切換,無則創建) |
| db.dropDatabase() | 洗掉當前所在資料庫(D大寫) |
注:
- 使用"show dbs"時,不顯示空的資料庫
> use mymongo
switched to db mymongo
> db
mymongo
> show dbs # 創建后使用show dbs不會顯示剛創建的資料庫
admin 0.000GB
config 0.000GB
local 0.000GB
> db
mymongo
> db.mytest.insert({"name":"chen"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
mymongo 0.000GB # 插入一條資料后,就可以在show dbs中顯示出來了
- 洗掉資料庫前要切換到要洗掉的資料庫,洗掉之后資料庫內內容被清空,使用"show dbs"不顯示,但是使用"db"命令的時候還會看到,
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
mymongo 0.000GB
> db.dropDatabase()
{ "dropped" : "mymongo", "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
3、集合操作
關系型資料庫中,每個庫是由多張table組成,
而NoSQL中,每個庫是由多個集合(collection)組成,相當于sql中的table,集合中以鍵值對(json、python.dict)的形式保存資料,
| 命令 | 操作 |
|---|---|
| db.createCollection(集合名, [引數]) | 創建集合(一般不用這種方式而是在插入資料時自動創建) |
| show collections/show tables | 查看集合 |
| db.集合名.drop() | 洗掉集合 |
> db.createCollection("colletiontest")
{ "ok" : 1 }
> show collections
colletiontest
mytest
> db.colletiontest.drop()
true
> show collections
mytest
4、資料操作
也叫檔案操作
4.1、增
db.集合名.insert({"鍵名1":值1, "鍵名2": 值2 ...})
> db.students.insert({"name":"chen","age":"18", "grade":"一年級"})
WriteResult({ "nInserted" : 1 })
> db.students.insert({"name":"wang","age":"19", "grade":"二年級"})
WriteResult({ "nInserted" : 1 })
> db.students.insert({"name":"xu","age":20, "grade":"三年級"})
WriteResult({ "nInserted" : 1 })
一條insert陳述句只能插入一行資料,insert后面不能跟多行資料,
4.2、查
db.集合名.findOne() # 查詢一行
db.集合名.find() # 查詢全部
db.集合名.find().pretty() # 格式化列印
db.集合名.find({查找條件}) # 按條件查找
> db.students.findOne()
{
"_id" : ObjectId("5db63d020f98841018f7695f"),
"name" : "chen",
"age" : "18",
"grade" : "一年級"
}
> db.students.find()
{ "_id" : ObjectId("5db642b30f98841018f76965"), "name" : "chen", "age" : "18", "grade" : "一年級" }
{ "_id" : ObjectId("5db642bc0f98841018f76966"), "name" : "wang", "age" : "19", "grade" : "二年級" }
{ "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年級" }
> db.students.find().pretty()
{
"_id" : ObjectId("5db642b30f98841018f76965"),
"name" : "chen",
"age" : "18",
"grade" : "一年級"
}
{
"_id" : ObjectId("5db642bc0f98841018f76966"),
"name" : "wang",
"age" : "19",
"grade" : "二年級"
}
{
"_id" : ObjectId("5db653920f98841018f7696b"),
"name" : "xu",
"age" : 20,
"grade" : "三年級"
}
> db.students.find()
{ "_id" : ObjectId("5db642b30f98841018f76965"), "name" : "chen", "age" : "18", "grade" : "一年級" }
{ "_id" : ObjectId("5db642bc0f98841018f76966"), "name" : "wang", "age" : "19", "grade" : "二年級" }
{ "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年級" }
{ "_id" : ObjectId("5db654660f98841018f7696c"), "name" : "ma", "age" : 20, "grade" : "二年級" }
> db.students.find({"age":20})
{ "_id" : ObjectId("5db653920f98841018f7696b"), "name" : "xu", "age" : 20, "grade" : "三年級" }
{ "_id" : ObjectId("5db654660f98841018f7696c"), "name" : "ma", "age" : 20, "grade" : "二年級" }
"_id"是mongoDB自動添加的主鍵.
十六進制,每兩個字符為一個位元組,共12個位元組
- 前4個位元組為當前時間戳
- 接下來3個位元組為機器ID
- 再接下來2個是MongoDB的行程ID
- 最后是排序流水號
4.3、改
4.3.1、修改整行
db.集合名.update({查詢條件}, {修改后結果})

這里要注意,修改后結果就是整行的最終結果,并且只會修改一行,而不是所有匹配結果都修改,
可以通過多個欄位查找

4.3.2、修改指定欄位的值
db.students.update({查找條件}, {$set:{"要修改的欄位名1":修改后的值, "要修改的欄位名2": "值2"}})

同時修改了連個欄位的值,但同樣只會修改一條記錄
4.4、刪
db.集合名.remove({查詢條件})
db.集合名.remove({}) # 洗掉全部資料

會洗掉所有的匹配項
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/35485.html
標籤:NoSQL
上一篇:5分鐘徹底理解Redis持久化
下一篇:python實作LRU熱點快取
