NoSLQ之MongoDB簡單入門

ice_moss發表於2022-03-17

一、MongoDB介紹

MongoDB屬於NoSLQ型資料庫 。

MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。

MongoDB是一個介於關聯式資料庫和非關聯式資料庫(nosql)之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。

二、資料庫目錄結構

在使用MongoDB前我們需要開啟MongoDB service埠

mongodb://localhost:27017

然後我們就可以使用了

首先我們需要來了解一下MongoDB的目錄結構:

Go

連線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 協議》,轉載必須註明作者和本文連結

相關文章