首頁 >web前端 >js教程 >mongoDB中node中的增刪改查的學習

mongoDB中node中的增刪改查的學習

不言
不言原創
2018-07-27 11:07:461535瀏覽

這篇文章跟大家介紹的文章內容是關於mongoDB中node中的增刪改查的學習,有很好的參考價值,希望可以幫助到有需要的朋友。

準備

首先,要在node中使用mongoDB,需要安裝MongoDB Driver,指令如下:npm install mongodb --save
github位址:node- mongodb-native

同時,記得開啟mongoDB服務。

下面程式碼將在資料庫demodb中tasks集合裡面插入了一條文檔,並且在控制台列印出了該文檔的id。

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}表明,等資料庫操作完成之後,才執行回呼回呼函數。

注意:這裡為了方便,沒有開啟授權模式,所以,在登入url中不需要使用者名稱和密碼也可以在登入中隨便進行增刪改查。但在產品環境請記得務必開啟授權模式。

刪除

下面程式碼將在資料庫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.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的文檔,程式將會拋出斷言錯誤,如下:

mongoDB中node中的增刪改查的學習

下面程式碼將在資料庫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()將結果轉換成數組形式,運行程序,結果如下:

mongoDB中node中的增刪改查的學習

小結

雖然上面四個小程式略顯簡單,但是不積蹺步,無以至千里,如果你真的掌握了基本的增刪改查,那麼,掌握複雜的應用也只是時間問題了。

相關推薦:

mongoDB中使用者與權限的介紹

以上是mongoDB中node中的增刪改查的學習的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn