Cách sử dụng MongoDB với Node.js

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách tương tác với cơ sở dữ liệu MongoDB từ Node.js

Nếu bạn không quen vớiMongoDBkiểm tra hướng dẫn của chúng tôi về những điều cơ bản và cách cài đặt và sử dụng nó :)

Chúng tôi sẽ sử dụng chính thứcmongodb npmgói hàng. Nếu bạn đã có một dự án Node.js đang làm việc, hãy cài đặt nó bằng cách sử dụng

npm install mongodb

Nếu bạn bắt đầu từ đầu, hãy tạo một thư mục mới vớithiết bị đầu cuốivà chạynpm init -yđể bắt đầu một dự án Node.js mới, và sau đó chạynpm install mongodbchỉ huy.

Kết nối với MongoDB

Bạn yêu cầumongodbvà bạn nhận được đối tượng MongoClient từ nó.

const mongo = require('mongodb').MongoClient

Tạo một URL đến máy chủ MongoDB. Nếu bạn sử dụng MongoDB cục bộ, URL sẽ giống nhưmongodb://localhost:27017, như27017là cổng mặc định.

const url = 'mongodb://localhost:27017'

Sau đó, sử dụngmongo.connect()phương thức để nhận tham chiếu đến ứng dụng khách cá thể MongoDB:

mongo.connect(url, {
    useNewUrlParser: true,
    useUnifiedTopology: true
  }, (err, client) => {
  if (err) {
    console.error(err)
    return
  }
  //...
})

Bây giờ bạn có thể chọn một cơ sở dữ liệu bằng cách sử dụngclient.db()phương pháp:

const db = client.db('kennel')

Tạo và nhận một bộ sưu tập

Bạn có thể nhận được một bộ sưu tập bằng cách sử dụngdb.collection()phương pháp. Nếu bộ sưu tập chưa tồn tại, nó đã được tạo.

const collection = db.collection('dogs')

Chèn dữ liệu vào bộ sưu tập một Tài liệu

Thêm vào app.js hàm sau sử dụnginsertOne()phương pháp để thêm một đối tượngdogsbộ sưu tập.

collection.insertOne({name: 'Roger'}, (err, result) => {

})

Bạn có thể thêm nhiều mục bằng cách sử dụnginsertMany(), truyền một mảng làm tham số đầu tiên:

collection.insertMany([{name: 'Togo'}, {name: 'Syd'}], (err, result) => {

})

Tìm tất cả các tài liệu

Sử dụngfind()trên bộ sưu tập để nhận tất cả các tài liệu được thêm vào bộ sưu tập:

collection.find().toArray((err, items) => {
  console.log(items)
})

Tìm một tài liệu cụ thể

Chuyển một đối tượng đếnfind()phương pháp để lọc bộ sưu tập dựa trên những gì bạn cần truy xuất:

collection.find({name: 'Togo'}).toArray((err, items) => {
  console.log(items)
})

Nếu bạn biết bạn sẽ nhận được một phần tử, bạn có thể bỏ quatoArray()chuyển đổi con trỏ bằng cách gọifindOne():

collection.findOne({name: 'Togo'}, (err, item) => {
  console.log(item)
})

Cập nhật tài liệu hiện có

Sử dụngupdateOne()phương pháp cập nhật tài liệu:

collection.updateOne({name: 'Togo'}, {'$set': {'name': 'Togo2'}}, (err, item) => {
  console.log(item)
})

Xóa tài liệu

Sử dụngdeleteOne()phương pháp xóa tài liệu:

collection.deleteOne({name: 'Togo'}, (err, item) => {
  console.log(item)
})

Đóng kết nối

Sau khi thực hiện xong các thao tác, bạn có thể gọiclose()phương thức trên đối tượng khách hàng:

client.close()

Sử dụng lời hứa hoặc không đồng bộ / chờ đợi

Tôi đã đăng tất cả những ví dụ đó bằng cách sử dụnggọi lạicú pháp. API này hỗ trợlời hứa(vàasync / await) cũng.

Ví dụ cái này

collection.findOne({name: 'Togo'}, (err, item) => {
  console.log(item)
})

Có thể được sử dụng với các lời hứa:

collection.findOne({name: 'Togo'})
  .then(item => {
    console.log(item)
  })
  .catch(err => {
  console.error(err)
  })

hoặc async / await:

const find = async () => {
  try {
    const item = await collection.findOne({name: 'Togo'})
  } catch(err => {
  console.error(err)
  })
}

find()

Tải xuống miễn phí của tôiSổ tay Node.js


Các hướng dẫn nút khác: