mongoDB初階系列二:node中的增刪改查

前言

上一篇中(mongoDB初階系列一:用戶和權限)介紹了用戶和權限,這一篇將介紹如何在node中進行增刪改查。node

準備

首先,要在node中使用mongoDB,須要安裝MongoDB Driver,命令以下:npm install mongodb --save
github地址:node-mongodb-nativegit

同時,記得開啓mongoDB服務。github

下面代碼將在數據庫demodb中tasks集合裏面插入了一條文檔,而且在控制檯打印出了該文檔的id。mongodb

const MongoClient = require('mongodb').MongoClient

const assert = require('assert')
const url = 'mongodb://localhost:27017'
const dbName = 'demodb'

// 增
MongoClient.connect(url, function(err, client) {
  assert.equal(null, err)
  console.log("Connected successfully to server")

  const db = client.db(dbName)
  var tasks = db.collection('tasks') // 沒有則建立
  tasks.insertOne(
    {
      "project": "task1",
      "description": "task1 description."
    },
    {safe: true},
    function(err, documents) {
      if (err) throw err;
      console.log(documents.insertedId);
    }
  );

  client.close()
})

運行程序,發如今控制檯打印出了以下結果數據庫

Connected successfully to server
5b59d53ae3d895184824586b

這個返回的5b59d53ae3d895184824586b是MongoDB的文檔標識符,它是惟一的,它的本質是二進制JSON(即BSON),BSON是MongoDB用來交換數據的主要數據格式,MongoDB服務器用它代替JSON交換數據。大多數狀況下,它更節省空間,解析起來也更快。
聲明的{safe: true}代表,等數據庫操做完成以後,才執行回調回調函數。npm

注意:這裏爲了方便,沒有開啓受權模式,因此,在登陸url中不須要用戶名和密碼也能夠在登陸隨便進行增刪改查。但在產品環境請記得務必開啓受權模式。小程序

下面代碼將在數據庫demodb中tasks集合找到project爲task1的這條文檔,並刪除它。segmentfault

// 刪
MongoClient.connect(url, function(err, client) {
  assert.equal(null, err)
  console.log("Connected successfully to server")

  const db = client.db(dbName)
  var tasks = db.collection('tasks')
  tasks.deleteOne(
    {
      "project": "task1"
    },
    function(err, result) {
      assert.equal(err, null);
      assert.equal(1, result.result.n);
      console.log("Removed the document");
    }
  );

  client.close()
})

注意:若是tasks集合中有多條project爲task1的文檔,那麼,也只會刪除找到的第一天文檔。數組

下面代碼將在數據庫demodb中tasks集合找到project爲task1的這條文檔,並更新它。服務器

// 改
MongoClient.connect(url, function(err, client) {
  assert.equal(null, err)
  console.log("Connected successfully to server")

  const db = client.db(dbName)
  var tasks = db.collection('tasks')
  tasks.updateOne(
    {
      "project": "task1"
    },
    { $set: { "project" : "task999" } },
    {safe: true},
    function(err, result) {
      assert.equal(err, null);
      assert.equal(1, result.result.n);
      console.log("Updated the document");
    }
  );

  client.close()
})

注意:若是在tasks集合沒有找到project爲task1的文檔,程序將會拋出斷言錯誤,以下:
圖片描述

下面代碼將在數據庫demodb中tasks集合找到全部文檔,並打印到控制檯。

// 查
MongoClient.connect(url, function(err, client) {
  assert.equal(null, err)
  console.log("Connected successfully to server")

  const db = client.db(dbName)
  var tasks = db.collection('tasks')
  tasks.find().toArray((err, docs) => {
    console.log(docs)
    assert.equal(null, err) // err 不等於null, 則在控制檯打印err
    // assert.equal(3, docs.length) // 記錄不等於3條, 則在控制檯打印記錄條數
  })
  client.close()
})

find()方法找到全部文檔,toArray()將結果轉換成數組形式,運行程序,結果以下:
圖片描述

小結

雖然上面四個小程序略顯簡單,可是不積跬步,無以致千里,若是你真的掌握了基本的增刪改查,那麼,掌握複雜的應用也只是時間問題了。這是mongo初階系列的第二篇,接下來還有第三篇,藉助mongoose,更優雅地操做數據。敬請期待!

相關文章
相關標籤/搜索