MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB:Lỗi nghiêm trọng:Không tìm thấy lớp 'MongoClient'

TL; DR

Lớp MongoClient là một phần của gói PECL kế thừa mongo nhưng không phải là gói mongodb cập nhật nữa.

Và vì bạn có mongodb đã cài đặt tiện ích mở rộng chứ không phải mongo một, đây là lý do tại sao bạn gặp lỗi

Fatal error: Class 'MongoClient' not found

Trên repo github trình điều khiển MongoDB PHP, ghi chú phát hành về phiên bản 1.0.0, đề xuất các nhà phát triển sử dụng MongoDB\Driver\Manager thay vì MongoClient

Các thay đổi từ tiện ích mở rộng mongo cũ của chúng tôi

Đáng kể nhất, các lớp MongoClient, MongoDB vàMongoCollection của trình điều khiển kế thừa đã bị loại bỏ bởi lớpMongoDB \ Driver \ Manager, là cổng mới để kết nối và thực hiện các truy vấn, lệnh và hoạt động ghi.

Vì vậy, đây là tài liệu về lớp thay thế và đoạn mã sẽ thay thế của bạn:

$m = new MongoDB\Driver\Manager("mongodb://localhost:27017");

Vì tài liệu đang nhắc nó, lớp này không được dùng nữa.

Cảnh báo Tiện ích mở rộng xác định lớp này không được dùng nữa. Thay vào đó, nên sử dụng phần mở rộng MongoDB. Các lựa chọn thay thế cho lớp này bao gồm:

  • MongoDB \ Driver \ Manager

Từ những gì tôi đọc được trên lịch sử phát hành kho lưu trữ github của họ, lớp bạn đang cố gắng sử dụng đã bị loại bỏ kể từ phiên bản mongodb 1.0.0 , vì vậy, trên phiên bản 1.6.0 bạn đang có, lớp này thậm chí không phải là một phần của dll nữa.

Điều đó đã được xác nhận bởi vấn đề này trên github của họ

phái sinh đã bình luận vào ngày 16 tháng 4

MongoClient là một lớp từ trình quản lý kế thừa cũ và không được cho là có sẵn trong trình này. Trình điều khiển mới có \ MongoDB \ Driver \ Manager và thư viện đi kèm có \ MongoDB \ Client.

Bạn cần cài đặt tiện ích mở rộng kế thừa cũ (pecl installmongo) và sử dụng PHP 5.x hoặc cập nhật mã của bạn để sử dụng các lớp trình điều khiển mới này vì trình điều khiển cũ không khả dụng cho PHP 7. Có hướng dẫn nâng cấp tại đây:// mongodb.github.io/mongo-php-library/upgrade-guide/

Một cách khác, theo đề xuất của thành viên MongoDB được trích dẫn ở đây ở trên là sử dụng phần mở rộng pecl này:https://pecl.php.net/package/mongo thay vì https://pecl.php.net/package/mongodb. lưu ý cảnh báo ở đó nêu rõ:

Gói này đã được thay thế, nhưng vẫn được duy trì để sửa lỗi và sửa lỗi bảo mật.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tự động xóa tài liệu sưu tập MongoDB

  2. Sử dụng MongoDB $ pull để xóa tài liệu trong Mảng

  3. Mảng Mongodb $ push và $ pull

  4. Meteor:sự khác biệt giữa tên cho bộ sưu tập, biến, ấn phẩm và đăng ký?

  5. Dừng mongodb bỏ qua các ký tự đặc biệt?