Thứ năm, 12/12/2019 | 00:00 GMT+7

Cách tạo, truy xuất, cập nhật và xóa bản ghi trong MongoDB

MongoDB là database tài liệu NoSQL open-souce miễn phí được sử dụng phổ biến trong các ứng dụng web hiện đại. Trong hướng dẫn ngắn này, bạn sẽ khám phá cách làm việc với dữ liệu trong MongoDB. Bạn sẽ tạo, truy xuất, cập nhật và xóa các bản ghi.

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần cài đặt MongoDB, bạn có thể thực hiện theo Cách cài đặt MongoDB trên Ubuntu 18.04 .

Tạo database

Trên server đang chạy MongoDB, gõ mongo để mở kết nối với database :

  • mongo

Khi bạn nhìn thấy biểu tượng > , bạn đã sẵn sàng tạo database đầu tiên của bạn và bắt đầu thêm bản ghi.

Hãy tạo một database cá nhân để lưu trữ một số dữ liệu về user .

Lệnh đầu tiên của ta use userdb tạo một database mới với tên là “userdb”, bạn có thể đặt bất kỳ tên nào bạn muốn ở định dạng use <databasename> .

  • use userdb

Bạn có thể xác minh database mà bạn hiện đang sử dụng bằng lệnh db , trong trường hợp của ta , lệnh này trả về “userdb”:

  • db
Output
userdb

Bây giờ database của bạn đã được tạo, bạn có thể tạo một số tài liệu có cấu trúc JSON để lưu trữ dữ liệu trong database của bạn .

Thực thi lệnh sau để chèn một số dữ liệu vào database của bạn:

  • db.people.insert({ name: "Andrew", age: 33, hobbies: ["Coding", "Gaming", "Cooking"], hungry: false})

Bạn sẽ nhận được thông báo WriteResult cho biết quá trình chèn của bạn đã thành công:

Output
WriteResult({ "nInserted" : 1 })

Bạn có thể sử dụng nhiều kiểu dữ liệu, bao gồm chuỗi, số, mảng và giá trị boolean. Key không cần có dấu ngoặc kép.

Truy xuất dữ liệu

Khi bạn có dữ liệu trong bộ sưu tập của bạn , bạn có thể bắt đầu tìm kiếm và lọc dữ liệu đó ra bằng cách sử dụng .find(<parameters>)

Để xác minh dữ liệu đã được thêm vào tài liệu "mọi người", hãy sử dụng cú pháp find() . Thực thi lệnh này trong console MongoDB:

  • db.people.find()

Lệnh này hiển thị tất cả dữ liệu hiện được liên kết với tài liệu "mọi người".

Output
{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false }

Nếu bạn muốn chuyển định dạng này thành định dạng JSON đẹp, hãy sử dụng .pretty() sau .find() :

  • db.people.find().pretty()
Output
{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false }

Khi bạn thêm một bản ghi mới, Mongo đó sẽ tự động tạo khóa _id để bạn tham khảo sau này.

Cố gắng thêm nhiều dữ liệu hơn và sau đó ta sẽ làm việc để sửa đổi và tìm kiếm dữ liệu.

  • db.people.insert({ name: "Riley", age: 3, hobbies: ["Sleeping", "Barking", "Snuggles"], hungry: true})
  • db.people.insert({ name: "You", age: 30, hobbies: ["Coding", "Reading DigitalOcean Articles", "Creating Server"], hungry: true})

Ví dụ, nếu tôi chỉ muốn tìm profile của những người đang đói:

  • db.people.find({ hungry: true }).pretty()
Output
{ "_id" : ObjectId("5c08cbea3d828385a2162d95"), "name" : "Riley", "age" : 3, "hobbies" : [ "Sleeping", "Barking", "Snuggles" ], "hungry" : true } { "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "You", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Server" ], "hungry" : true }

Hoặc theo sở thích cụ thể:

  • db.people.find({ hobbies: "Coding" }).pretty()
Output
{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false } { "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "You", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Server" ], "hungry" : true }

Cập nhật dữ liệu

Để sửa đổi dữ liệu , hãy sử dụng hàm .update() . nhưng trước tiên, hãy xem dữ liệu của ta để xem ta muốn thay đổi điều gì:

  • db.people.find().pretty()
Output
{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false } { "_id" : ObjectId("5c08cbea3d828385a2162d95"), "name" : "Riley", "age" : 3, "hobbies" : [ "Sleeping", "Barking", "Snuggles" ], "hungry" : true } { "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "You", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Server" ], "hungry" : true }

Sửa đổi tên của bản ghi thứ ba như sau:

  • db.people.update({ name: "You"}, {$set: { name: "Sammy" }})

Phần đầu tiên của câu lệnh chỉ định những gì bạn đang tìm kiếm để cập nhật và phần thứ hai là giá trị mới bạn muốn đặt. Bạn sẽ nhận thấy với lệnh này, có 1 bản ghi trùng khớp và 1 bản ghi được sửa đổi:

Output
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Nếu bây giờ ta kiểm tra bản ghi đó với tên mới đặt của bạn :

  • db.people.find({ name: "Sammy" }).pretty()
Output
{ "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "Sammy", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Server" ], "hungry" : true }

Giá trị khóa name đã được đặt thành giá trị mới của nó là sammy .

Bạn cũng có thể đưa các sở thích mới vào mảng bằng cách sử dụng $push thay vì $set :

  • db.people.update({ name: "Sammy" }, {$push: { hobbies: "Typing furiously" }})
  • db.people.find({ name: "John" }).pretty()
Output
{ "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "John", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Server", "Typing furiously" ], "hungry" : true }

Bây giờ ta hãy xem xét việc xóa dữ liệu.

Xóa dữ liệu (D)

Xóa dữ liệu bằng cách sử dụng hàm .remove() . Bạn có thể xóa dữ liệu theo một số cách, nhưng cách an toàn nhất là xác định vị trí một bản ghi để xóa bằng cách sử dụng _id duy nhất, ví dụ: bạn có nhiều mục nhập “Sammy”, xóa bằng name: "Sammy" sẽ xóa tất cả của họ. Ta hãy cố gắng này:

  • db.people.remove({ _id: ObjectId("5c08cc2e3d828385a2162d96")})
Output
WriteResult({ "nRemoved" : 1 })
  • db.people.find().pretty()
Output
{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false } { "_id" : ObjectId("5c08cbea3d828385a2162d95"), "name" : "Riley", "age" : 3, "hobbies" : [ "Sleeping", "Barking", "Snuggles" ], "hungry" : true }

Mục nhập “Sammy” đã được xóa một cách an toàn mà không ảnh hưởng đến bất kỳ bản ghi “Sammy” nào khác nếu chúng tồn tại. Hãy thử làm điều này để xem bạn có thể làm gì khác.

Kết luận

Sau khi đọc bài viết này, bây giờ bạn đã hiểu cơ bản về cách tạo, truy xuất, cập nhật và xóa bản ghi trong database MongoDB.


Tags:

Các tin liên quan