一、MongoDB介紹
MongoDB屬於NoSLQ型資料庫 。
MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。
MongoDB是一個介於關聯式資料庫和非關聯式資料庫(nosql)之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。
二、資料庫目錄結構
在使用MongoDB前我們需要開啟MongoDB service埠
mongodb://localhost:27017
然後我們就可以使用了
首先我們需要來了解一下MongoDB的目錄結構:
連線MongoDB服務後,在埠下我們可以看到有幾個資料庫(例如:admin、config、coolcar等),一個資料庫下可以有一個或者多個collection(例如:coolcar下有一個account),而一個collection下面則是Documents,該文件下就是具體的一條或多條資料。
三、基本操作(CRUD)
這裡以coolcar資料庫中的account為例
1. 增加資料
當我們使用一下程式碼時,如果coolcar沒有account時,MongoDB會為我們建立
即:db.collection.insert()
db.acconut.insert() //增加資料,可以單條,或者多條
db.account.insertOne() //增加一條資料
db.account.insertMany() //增加多條資料
例:
db.account.insertMany([
{
_id: "01", //如果_id不設,系統會自動設定
open_id:"trip01",
login_count: 3,
},
{
_id: "02",
open_id: "trip02",
login_count:4,
},
])
資料就已經寫入了:
{
"acknowledged": true,
"insertedIds": {
"0": "01",
"1": "02"
}
}
_id: “01”:
{
"_id": "01",
"open_id": "trip01",
"login_count": 3
}
_id:”02”:
{
"_id": "02",
"open_id": "trip02",
"login_count": 4
}
2. 查詢資料
//查資料
db.account.find()
ab.account.findAndModify()
執行:db.account.find()
[
{
"_id": "01",
"open_id": "trip01",
"login_count": 3
},
{
"_id": "02",
"open_id": "trip02",
"login_count": 4
}
]
當然這裡還可以根據條件find
//查詢大於3的login_count
db.account.find({
login_count:{$gt:3}
})
//and邏輯查詢
db.account.find({
login_count:{$gt:3},
open_id:"trip500",
})
//根據欄位查詢
db.account.find({
"profile.age":{$lte: 30}
})
db.account.getIndexes({
"profile.age":1
})
//or邏輯查詢
//$or:[{con1, con2} or {con3}]
db.account.find({
$or:[
{
login_count:{$gt: 2},
open_id: "trip05",
},
{
login_count: 3,
}
]
})
當然我們還可以使更新資料的方法來修改
//查詢open_id,如果有則找到,沒有則建立
function resolveOpenId(open_id){
return db.account.update({
open_id: open_id
}, {
$set:{
open_id: open_id
}
}, {
upsert: true
})
}
3. 更新資料
db.account.update()
db.account.updateOne()
db.account.updateMany()
我們仍然以db.account.update()
為例
db.account.update({
_id:"01" //先找到_id:"01"的資料
},{
$set:{ //更新的內容
open_id:"trip05",
login_count:0,
}
})
然後我們就可以看到:
{
"_id": "01",
"open_id": "trip05",
"login_count": 0
}
當然還有一個更新方式:
//更新資料
db.account.update({
_id: "01"
},{
$inc:{
login_count: 100 //在原本login_count值的基礎上加上100
},
$set:{
open_id: "trip500"
}
})
看一下結果:
{
"_id": "01",
"open_id": "trip500",
"login_count": 100
}
當然,這裡我們還可以增加其他資訊:
//更新資料
db.account.update({
_id: "02"
},
{
$set:{
profile:{
name:"abc",
age: 21,
photo_url: "https://example.com/123",
}
}
})
結果:
{
"_id": "02",
"open_id": "trip02",
"login_count": 4,
"profile": {
"name": "abc",
"age": 21,
"photo_url": "https://example.com/123"
}
}
4. 刪除資料
db.account.deleteOne()
db.account.deleteMany()
這裡以db.account.deleteOne()
為例:
db.account.deleteOne({
_id: "01"
})
看到這樣的結果:
{
"acknowledged": true,
"deletedCount": 1 //刪除條資料
}
如果我們需要清空account中的資料可以使用:
db.account.drop()
本作品採用《CC 協議》,轉載必須註明作者和本文連結