Toidicode.com

Toidicode.com

BASIC TO ADVANCE

Bài 8: Delete document trong MongoDB sử dụng PHP

Sau khi đã thêm, sửa, truy vấn được sữ liệu trong MongoDB rồi thì bài này mình sẽ giới thiệu với mọi người các xóa một hoặc nhiều document trong mongoDB bằng PHP.

Data Demo:

Data Demo

1, Xóa một bản ghi.

Để xóa một bản ghi trong MongoDB thì mọi người sử dụng phương thức deleteOne() với cú pháp như sau:

$collection->deleteOne($filter, $option);

Trong đó:

  • $filter là một mảng hoặc object chứa các điều kiện so khớp (Xem các điều kiện).
  • $options là mảng chứa các thông số cấu hình thêm (có thể bỏ trống).

Chú ý: Khi câu lệnh này thực thi thì nó chỉ xóa duy nhất 1 bản ghi đầu tiền mà kết quả so khớp trả về thôi.

VD: Mình sẽ xóa một bản ghi có category = 'Foo'

<?php

use MongoDB\Client;

require('vendor/autoload.php');

$post = (new Client("mongodb://127.0.0.1:37017"))->tuts->Post;

$result = $post->deleteOne(['category' => 'Foo']);

echo $result->getDeletedCount(); // xem số lượng bản ghi đã xóa khi thực thi

// Câu trên tương tự với câu truy vấn SQL sau:
//  DELETE FROM Post WHERE category = 'Foo'

Kết quả trả về:

1

Như các bạn đã thấy thì trong database của chúng ta có những 2 document có category = 'Foo',  nhưng do chúng ta sử dụng phương thức deleteOne() nên nó chỉ xóa duy nhất 1 bản ghi đầu tiên mà nó tìm được.

2, Xóa nhiều bản ghi.

Để xóa nhiều bản ghi thì các bạn sử dụng phương thức deleteMany() với cú pháp và kết quả trả về tương tự như phương thức deleteOne().

VD: Xóa tất cả các bản ghi có title chứa từ Post.

<?php

use MongoDB\Client;

require('vendor/autoload.php');

$post = (new Client("mongodb://127.0.0.1:37017"))->tuts->Post;

$result = $post->deleteMany(
    [
        'title' => [
            '$regex' => 'Post', '$options' => 'i'
        ]
    ]);

echo $result->getDeletedCount(); // xem số lượng bản ghi đã xóa khi thực thi

// Câu trên tương tự với câu truy vấn SQL sau:
//  DELETE FROM Post WHERE title LIKE '%Post%'

Kết quả trả về:

2

Như các bạn đã thấy thì đối với phương thức deleteMany() thì nó sẽ xóa hết tất cả các dữ liệu mà $filter so khớp.

3, Kết.

Phần delete document thì không có gì khó đúng không ạ! Các bài sau trong series mình sẽ giới thiệu với mọi người các hàm hữu dụng trong query MongoDB bằng PHP.

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

3 Comments

Hay quá

Nguyễn Đăng Dũng

6 năm trước

 hay

Quan

6 năm trước

  1. hi vong co những bài mới
  2. tuyệt quá
  3. cho triệu view

Quan

6 năm trước

Bình luận

Captcha