DEV Community

Bhurisub Dejpipatpracha
Bhurisub Dejpipatpracha

Posted on • Edited on

Node.js : การเขียนสคริปต์ติดต่อฐานข้อมูล Mongo

บทความนี้จะแนะนำการเขียนสคริปต์ JavaScript ติดต่อกับฐานข้อมูล Mongo ซึ่งจะต้องอาศัยมอดูลในการติดต่อฐานข้อมูล Mongo ในตัวอย่างที่นี่ขอแนะนำมอดูลชื่อ mongodb ซึ่งมีชื่อเดียวกันกับฐานข้อมูลเลย

เริ่มจากติดตั้งมอดูล mongodb
npm i mongodb หรือ npm install mongodb

การติดต่อฐานข้อมูล Mongo

const MongoClient = require('mongodb').MongoClient
const url = 'mongodb://localhost:27017'
const option= { useNewUrlParser: true,useUnifiedTopology: true }
const dbName = 'webphuket'

MongoClient.connect(url,option,(err, client) => {
  if (err) throw err

  const mongo = client.db(dbName)
  console.log("Connected successfully to server")
  client.close()
})

กำหนดตัวแปร MongoClient เพื่อเรียกใช้มอดูล mongodb
กำหนดตัวแปร url เพื่อกำหนด URLและ port เพื่อติดต่อฐานข้อมูล Mongo
กำหนดตัวแปร dbName เพื่อกำหนดชื่อฐานข้อมูล

จากนั้นติดต่อฐานข้อมูล Mongo ด้วย method ชื่อ connect()

การเพิ่มข้อมูล

...
...
  var data = { 
    title : 'Product 1',
    price : 1000
  }
  mongo.collection('products').insertOne(data, (err, r) => {
    console.log('documents inserted  : ',r.insertedCount) 
    client.close()
  })

สำหรับการเพิ่มข้อมูลต้องกำหนดข้อมูลเก็บไว้ในตัวแปร data ขอยกตัวอย่างข้อมูลดังนี้ หัวข้อ title ชื่อสินค้า Product 1 และราคาสินค้า price เท่ากับ 1000 เป็นต้น

จากกำหนด Collection ที่ต้องการเพิ่มในตัวอย่างชื่อ products และใช้ method ชื่อ insertOne() เป็นการเพิ่มข้อมูลชุดเดียวกัน

และในกรณีต้องการเพิ่มข้อมูลหลายๆ ชุดในครั้งเดียว ก็สามารถใช้ method ชื่อ insertMany() ได้ดังตัวอย่าง

การเพิ่มข้อมูลหลายๆ ชุดในครั้งเดียว

...
...
  var data = [
    { title : 'Product 2', price : 2000},
    { title : 'Product 3', price : 3000},
    { title : 'Product 4', price : 4000}
  ]
  mongo.collection('products').insertMany(data, (err, r) => {
    console.log('documents inserted  : ',r.insertedCount)
    client.close()
  })
...

การแสดงข้อมูล

สำหรับการแสดงข้อมูลทั้งหมดสามารถทำได้โดยใช้ method ชื่อ find() แล้วยัดข้อมูลล
Array ซึ่งเราสามารถนำไปใช้งานต่อได้

...
...
    mongo.collection('products').find().toArray((err, result) => {
        console.log(result)
        client.close()
    })
...

ในกรณีต้องการแสดงข้อมูลเฉพาะ ก็สามารถทำได้กำหนดเงื่อนไข เช่น หากต้องการแสดงสินค้าที่มีการราคาเท่ากับ 2000 บาท ก็กำหนดให้แสดงข้อมูลดังนี้


    query = { price : 2000 } 
    mongo.collection('products').find(query).toArray((err, result) => {
        console.log(result)
        client.close()
    })
...

การแก้ไขข้อมูล

ในกรณีต้องการแก้ไขข้อมูล เราสามารถทำได้กำหนดชุดข้อมูลที่ต้องการแก้ไข สามารถกำหนด _id ที่ต้องการแก้ไข { _id : new MongoID.ObjectID('5d9c4eab7e4eda0b7418f0b8')

และกำหนดข้อมูลที่ต้องการแก้ไข
data = { $set: { price: 5555 }}

แล้วแก้ไขข้อมูลด้วย method ชื่อ updateOne() ซึ่งเป็นการแก้ไข 1 ชุด

...
...
    const MongoID = require('mongodb').ObjectID
...
...
    query = { _id : new MongoID.ObjectID('5d9c4eab7e4eda0b7418f0b8') }
    data = { $set: { price: 6000 }}

    mongo.collection('products').updateOne(query,data, (err, r) => {
        console.log("document updated")

        client.close()
    })
...

การลบข้อมูล

ในกรณีที่ต้องการข้อมูลสามารถทำได้โดยกำหนด _id ที่ต้องการลบแล้วเรียกใช้ method ชื่อ deleteOne() ดังตัวอย่าง

...
...
    const MongoID = require('mongodb').ObjectID
...
...
    query = { _id : new MongoID.ObjectID('5d9c4eab7e4eda0b7418f0b8') }

    mongo.collection('products').deleteOne(query,(err, r) => {
        console.log("document deleted")

        client.close()
    })
...
})

สรุป

สำหรับการติดต่อฐานข้อมูล Mongo สามารถใช้งานมอดูลชื่อ mongodb โดยมี method ให้เราเลือกใช้มากมาย ตัวอย่างเช่น insertOne() ,insertMany(), find(), updateOne() , deleteOne() ซึ่งสามารถเข้าไปดูรายละเอียดเพิ่มเติมที่ https://www.npmjs.com/package/mongodb

Top comments (0)