Hướng dẫn sử dụng PHP truy vấn dữ liệu trong MongoDB
|Sử dụng PHP truy vấn dữ liệu trong MongoDB
Bài viết trước mình đã hướng dẫn các bạn sử dụng ngôn ngữ lập trình PHP để thực hiện kết nối và thực hiện các thao tác thêm, sửa, xóa với cơ sở dữ liệu của mình rồi. Ở bài viết này mình sẽ hướng dẫn các bạn thực hiện các thao tác truy vấn, khai thác dữ liệu trong MongoDB để hoàn thiện series bài viết bước đầu tiếp cận với MongoDB này của mình, trước khi chúng ta đi tìm hiểu chuyên sâu để giải quyết các bài toán thực tế phức tạp hơn.

Sử dụng PHP truy vấn dữ liệu trong MongoDB
Xem thêm: Lập trình kết nối PHP, thao tác dữ liệu với MongoDB
1. Các phương thức để truy vấn dữ liệu
Trong PHP Driver của MongoDB cung cấp cho chúng ta 3 phương thức để thực hiện thao tác truy vấn dữ liệu đó là: find, findOne, findAndModify. Mỗi phương thức này có những tác dụng riêng của nó nhưng đều hoạt động dựa trên lớp MongoCollection, các bạn cần lưu ý việc này, vì mỗi khi sử dụng các phương thức trên chúng ta đều phải khởi tạo lớp MongoCollection trước mới có thể sử dụng được:
- find: Thực hiện thao tác tìm kiếm theo điều kiện và trả ra một MongoCursor là một tập hợp kết quả để bạn khai thác dữ liệu, thường dùng trong các trường hợp lấy danh sách dữ liệu thành viên, bài viết ,..
- findOne: Thực hiện thao tác tìm kiếm và trả về duy nhất 1 document, thường dùng để giải quyết các bài toán như truy vấn thông tin về một thành viên, bài viết, ….
- findAndModify: Thực hiện tìm kiếm, cập nhật document và trả về chính nó (ở bài viết này mình sẽ chưa đi sâu về phương thức này)
Tùy vào trường hợp, bài toán cụ thể mà bạn có thể sử dụng phương thức tiếp cận phù hợp. Mình sẽ ví dụ cụ thể hơn để các bạn dễ hiểu.
2. Sử dụng findOne tìm kiếm một document
1 2 3 4 5 6 7 |
//UserId cần truy vấn thông tin $userId = '542a6d0e2f0560580a000001'; //Khởi tạo đối tượng làm việc với Collection $objCollection = new MongoCollection($objDB, 'account'); //Thực hiện truy vấn theo field _id và gán kết quả vào biến $userData $userData = $objCollection->findOne(array('_id' => new MongoId($userId))); var_dump($userData); |
Với đoạn code trên, bạn có thể thấy, dữ liệu document được gán vào biến $userData là một array, bạn có thể sử dụng mảng này để xuất các thông tin tương ứng một cách dễ dàng
3. Sử dụng find để lấy một danh sách document
1 2 3 4 5 6 7 8 9 |
//Nhóm Groupo cần lấy $groupId = 1; //Khởi tạo đối tượng làm việc với Collection $objCollection = new MongoCollection($objDB, 'account'); //Thực hiện truy vấn theo field _id và gán kết quả vào biến $userData $cursor = $objCollection->find(array('groupId' => new MongoInt32($groupId))); foreach($cursor as $rs){ var_dump($rs); } |
Như các bạn có thể thấy, với đoạn code trên, chúng ta sẽ lấy ra được một danh sách các tài khoản, thành viên thuộc nhóm “1”. Dữ liệu trả về khi sử dụng phương thức find sẽ là một cursor (con trỏ), từ con trỏ ta có thể sử dụng vòng lặp lấy ra một document array giống như findOne một cách dễ dàng.
Lời kết
Yêu cầu truy vấn thông tin, dữ liệu trong các bài toán thực thế là thiên biến vạn hóa, ở bài viết này mình chỉ hướng dẫn các bạn thực hiện khai thác thông tin ở mức cơ bản nhất đối với người mới bắt đầu tiếp cận với MongoDB. Những bài viết sau chúng ta sẽ cùng đi tìm hiểu sâu hơn về các bài toán thực tế phức tạp hơn. Chắc rằng, với bài viết này là các bạn cũng để biết cách giải quyết các bài toán thông thường rồi phải không? 🙂