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:
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!
Hay quá
Nguyễn Đăng Dũng
7 năm trước
hay
Quan
6 năm trước
Quan
6 năm trước