Mongodb có thể được sử dụng với php không?

MongoDB là một lựa chọn tuyệt vời cho một số ứng dụng. Trong thế giới PHP, chúng ta cũng có thể thử một thứ gì đó hơn là chỉ một ngăn xếp LAMP và cung cấp cho các lược đồ cơ sở dữ liệu của chúng ta nhiều tự do hơn. Một trong những Trình ánh xạ quan hệ đối tượng (ORM) phổ biến nhất cho PHP là Học thuyết cũng có triển khai rất tốt Ánh xạ tài liệu đối tượng (ODM) cho MongoDB. Chúng tôi sẽ không đi vào chi tiết về những ưu điểm và nhược điểm của cơ sở dữ liệu NoSql và SQL nhưng hãy xem cách chúng tôi có thể xây dựng một ứng dụng rất đơn giản nếu chúng tôi đã quyết định sử dụng Mongo

Mã nguồn hoàn chỉnh có sẵn trong kho lưu trữ sau

jkapuscik2/mongo-shopping-cart

Đóng góp cho sự phát triển của jkapuscik2/mongo-shopping-cart bằng cách tạo một tài khoản trên GitHub

github. com

Chúng tôi cần tạo một ứng dụng giỏ hàng với API REST cho phép chúng tôi

  • thêm sản phẩm mới vào danh mục
  • cập nhật tên sản phẩm
  • tạo một giỏ hàng mới
  • thêm và xóa sản phẩm khỏi giỏ hàng
  • ghi lại khi một sản phẩm được thêm vào giỏ hàng

Chúng tôi cũng có một loạt các yêu cầu

  • giá của sản phẩm phải dương và có đơn vị tiền tệ được chỉ định là EUR, PLN hoặc USD
  • chúng tôi chỉ có thể có một sản phẩm thuộc loại nhất định trong giỏ hàng và không quá 4 sản phẩm cùng lúc

Chúng tôi sẽ sử dụng khung Symfony vì nó tích hợp độc đáo với Doctrine ODM. Chúng ta có thể cài đặt thư viện và tạo cấu hình cơ bản bằng cách chạy các lệnh sau

composer config extra.symfony.allow-contrib truecomposer require doctrine/mongodb-odm-bundle

Chúng tôi sẽ truy cập cơ sở dữ liệu theo cách tương tự như với ORM trong Doctrine. Chúng tôi đang sử dụng các chú thích trong các mô hình sẽ chỉ ra các biến lớp nào sẽ được duy trì. Trong Product của chúng tôi, chúng tôi đang cung cấp tên, giá và đơn vị tiền tệ làm đối số hàm tạo. Không cần nhiều logic nên lớp học rất đơn giản

Theo mặc định, một bộ sưu tập có cùng tên với một mô hình sử dụng nó. Chúng tôi có thể tùy chỉnh hành vi này bằng cách cung cấp tham số collectionName trong chú thích Document. Chúng tôi cũng có thể lưu trữ nhiều mô hình khác nhau trong một bộ sưu tập vì MongoDb rất linh hoạt khi nói đến lược đồ cơ sở dữ liệu

Product nhận các đối tượng giá trị đã được xác thực để thực thi tính chính xác của dữ liệu. Chúng tôi sẽ không đi vào chi tiết triển khai của những thứ đó ở đây, nó có thể được tìm thấy trên Github

Học thuyết ODM làm cho việc khóa lạc quan cực kỳ đơn giản. Cơ chế đó sẽ đảm bảo rằng không ai sửa đổi mô hình cùng lúc với chúng tôi bằng cách so sánh thuộc tính version. Tất cả những gì chúng tôi phải làm là đặt một chú thích @ODM\Version duy nhất

Mô hình cho giỏ hàng phức tạp hơn một chút vì chúng tôi phải đảm bảo đáp ứng tất cả các quy tắc liên quan đến việc thêm và xóa sản phẩm. Chúng tôi có thể lưu trữ tham chiếu đến bộ sưu tập Sản phẩm trong Mongo hoặc sử dụng tài liệu được nhúng. Mỗi cách tiếp cận đều có ưu và nhược điểm. Chúng tôi phải lưu trữ dấu thời gian bổ sung sản phẩm mới để tài liệu được nhúng sẽ phù hợp với chúng tôi hơn. Hơn nữa, nó sẽ hiệu quả hơn

Chúng tôi đang sử dụng dữ liệu về sản phẩm và tạo một tài liệu nhúng ShoppingCartItem riêng biệt

Vấn đề chúng tôi có thể gặp phải là đồng bộ hóa dữ liệu giữa các bộ sưu tập. Khi ai đó thay đổi tên của một sản phẩm, nó sẽ không được tự động phổ biến và chúng tôi sẽ thấy một tên lỗi thời trong giỏ hàng. Chúng tôi sẽ phải tạo cơ chế riêng để đảm bảo tính nhất quán của dữ liệu

Chúng tôi đang duy trì các mô hình với Trình quản lý tài liệu Doctrine. Chúng tôi có thể sử dụng kho lưu trữ tùy chỉnh cho từng mô hình hoặc sử dụng kho lưu trữ tích hợp với các chức năng cơ bản. Để đơn giản, chúng tôi sẽ gắn bó với cái sau. Nếu cần tùy chỉnh nhiều hơn, chúng ta sẽ phải thêm tham số repositoryClass vào chú thích @ODM\Document

MongoDB tỏ ra rất hữu ích trong một số trường hợp sử dụng và có thể hoạt động tốt với PHP. Nó chắc chắn là một giải pháp thay thế thú vị cho hầu hết các công cụ cơ sở dữ liệu phổ biến trong các dự án PHP như MySql hoặc PostgreSQL

Nếu bạn đang sử dụng PHP để xây dựng ứng dụng, bạn có thể muốn tương tác với cơ sở dữ liệu MongoDB trong mã của mình. May mắn thay, thật dễ dàng để kết nối với cơ sở dữ liệu MongoDB từ tập lệnh PHP chỉ với một chút thiết lập và cấu hình. Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách thiết lập kết nối PHP và MongoDB để bạn có thể truy cập cơ sở dữ liệu MongoDB trong ứng dụng của mình

điều kiện tiên quyết

Trước khi thử thiết lập kết nối giữa PHP và MongoDB, cần phải có một vài điều kiện tiên quyết cần thiết

  • Bạn cần đảm bảo rằng XAMPP hoặc WAMP đã được cài đặt và định cấu hình trên hệ thống của mình

  • MongoDB phải được cài đặt và cấu hình trên máy của bạn

  • Bạn sẽ cần có quyền truy cập internet để tải xuống một số tệp cần thiết

Cài đặt trình điều khiển MongoDB PHP

Trong phần này, chúng tôi sẽ bắt đầu quá trình thiết lập kết nối PHP và MongoDB bằng cách cài đặt trình điều khiển MongoDB PHP trên hệ thống của chúng tôi. Để thực hiện việc này, chúng tôi chỉ cần tải xuống tệp 'DLL' (Thư viện liên kết động) cần thiết có thể tìm thấy tại liên kết này. MongoDB PHP

Mongodb có thể được sử dụng với php không?

Chúng tôi sẽ đặt tệp đã tải xuống này vào một trong các thư mục cài đặt PHP của chúng tôi, chúng tôi sẽ thảo luận trong phần tiếp theo

Định cấu hình PHP và MongoDB trong Windows

Tiếp theo, hãy xem lại cách định cấu hình PHP theo cách cho phép kết nối với MongoDB trong môi trường Windows

  • Đầu tiên, chúng tôi mở php. ini được tìm thấy trong thư mục XAMPP sau. Product0

Mongodb có thể được sử dụng với php không?

  • Tiếp theo, chúng tôi thêm văn bản sau vào phần tiện ích mở rộng của tệp. Product1

  • Cuối cùng, chúng tôi giải nén tệp 'DLL' mà chúng tôi đã tải xuống trước đó vào thư mục sau. Product2

Mongodb có thể được sử dụng với php không?

Tạo cơ sở dữ liệu mẫu MongoDB

Bước tiếp theo của chúng tôi sẽ là tạo một tập dữ liệu mẫu mà chúng tôi có thể sử dụng trong hướng dẫn này

Đầu tiên, chúng tôi sẽ kết nối với cơ sở dữ liệu có tên productdb

Sau đó, chúng tôi có thể thực hiện thao tác insertMany() để thêm một số tài liệu giả mà chúng tôi có thể sử dụng cho mục đích demo. Hoạt động sẽ tạo bộ sưu tập Product3 và thêm các tài liệu này vào cùng một lúc

   db. Mỹ phẩm. insertMany( [
      { item. "bàn phím", số lượng. 20 },
      { item. "chuột", số lượng. 40 },
      { mục. "nguồn điện", số lượng. 30 },
      { item. "cpu", số lượng. 30 },
      { item. "card màn hình", số lượng. 20 },
      { mục. "mô-đun bộ nhớ", số lượng. 30 }
   ] );

Thao tác này sẽ trả về một phản hồi giống như sau

{
        "đã xác nhận". true,
        "insertedIds". [
          ObjectId("5e48b471389f0fd56b8b0554"),
          ObjectId("5e48b471389f0fd56b8b8b0555"),
          ObjectId("5e48b4715"b80f56),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),            ObjectId("5e48b80f4715"b47156),
                ObjectId("5e48b471389f0fd56b8b0557"),
                ObjectId("5e48b471389f0fd56b8b0558"),
                ObjectId("5e48b471389f0fd56b8b0559")
        ]
}

Chúng tôi có thể xác minh rằng bộ sưu tập Product3 đã được tạo thành công bằng lệnh này. Product5

Chúng ta sẽ nhận được kết quả giống như thế này

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

{
        "_id". ObjectId("5e48b471389f0fd56b8b0554"),
        "mục". "bàn phím",
        "số lượng". 20
}
{
        "_id". ObjectId("5e48b471389f0fd56b8b0555"),
        "mục". "chuột",
        "số lượng". 40
}
{
        "_id". ObjectId("5e48b471389f0fd56b8b0556"),
        "mục". "nguồn điện",
        "số lượng". 30
}
{
        "_id". ObjectId("5e48b471389f0fd56b8b0557"),
        "mục". "cpu",
        "số lượng". 30
}
{
        "_id". ObjectId("5e48b471389f0fd56b8b0558"),
        "mục". "thẻ video",
        "số lượng". 20
}
{
        "_id". ObjectId("5e48b471389f0fd56b8b0559"),
        "mục". "mô-đun bộ nhớ",
        "số lượng". 30
}

Kết nối với cơ sở dữ liệu MongoDB

Trong phần này, chúng ta sẽ tạo một tập lệnh PHP đơn giản sẽ kết nối với cơ sở dữ liệu Product6 của chúng ta

Hãy bắt đầu bằng cách tạo một thư mục mới có tên ‘phpmongo’ trong thư mục Product7. Sau đó, chúng tôi có thể tạo một tệp PHP mới có tên là 'kiểm tra. php’ và thêm đoạn mã sau vào nó

    $mng = new MongoDB\Driver\Manager("mongodb. //máy chủ cục bộ. 27017");
    $qry = new MongoDB\Driver\Query([]);

$rows = $mng->executeQuery("productdb. sản phẩm", $qry);

foreach ($rows as $row) {

       foreach ($rows as $row) {
      echo nl2br("$row->item. $row->qty\n");
    }

}

?>

Mã hiển thị ở trên sẽ đọc dữ liệu từ bộ sưu tập 'sản phẩm' tồn tại trong cơ sở dữ liệu 'productdb'. Hãy xem xét kỹ hơn những gì đang xảy ra trong kịch bản này

  • Chúng tôi sử dụng Product8 để tạo một đối tượng truy vấn MongoDB với một mảng trống. Điều này yêu cầu MongoDB đọc tất cả dữ liệu có thể có trong bộ sưu tập đích

  • Sau đó, chúng tôi thực hiện truy vấn đối với tên bộ sưu tập đã chỉ định bằng cách sử dụng dòng mã sau. Product9

  • Cuối cùng, chúng tôi lặp lại tất cả các tài liệu phù hợp và in nó ra trên trang

Kết quả sẽ giống như sau

Mongodb có thể được sử dụng với php không?

Phần kết luận

Khi bạn đang viết mã PHP và cần tương tác với cơ sở dữ liệu, MongoDB là một lựa chọn tự nhiên. May mắn thay, chỉ cần vài bước đơn giản để tạo kết nối giữa PHP và MongoDB. Trong bài viết này, chúng tôi đã hướng dẫn bạn toàn bộ quá trình tạo kết nối PHP và MongoDB, đồng thời chúng tôi đã cung cấp một ví dụ mã bao gồm một truy vấn MongoDB điển hình. Với các hướng dẫn và ví dụ về mã này để hướng dẫn bạn, bạn sẽ có thể viết mã PHP có thể truy vấn cơ sở dữ liệu MongoDB của riêng bạn

Làm cách nào để bật MongoDB trong PHP?

Bắt đầu thiết lập để chạy PHP với MongoDB .
điều kiện tiên quyết
Cài đặt
Cài đặt Apache
đang cài đạt PHP
Cài đặt tiện ích mở rộng PHP
Cài đặt thư viện MongoDB PHP
Bắt đầu cụm MongoDB trên Atlas
Bảo mật tên người dùng và mật khẩu

Làm cách nào để chèn dữ liệu vào MongoDB bằng PHP?

Tạo hoặc chèn một tài liệu MongoDB duy nhất bằng PHP . phương thức insertOne() chèn một tài liệu duy nhất vào MongoDB và trả về một phiên bản MongoDBInsertOneResult, mà bạn có thể sử dụng để truy cập ID của tài liệu được chèn. Đầu ra bao gồm ID của tài liệu được chèn

Làm cách nào để cập nhật dữ liệu trong MongoDB bằng PHP?

Cách cập nhật nhiều tài liệu MongoDB bằng PHP .
Tập lệnh MongoDBDeriverManager sẽ cập nhật các tài liệu phù hợp với tiêu chí đã chỉ định khi đa tham số được đặt thành true
Phương thức updateMany() của Thư viện PHP sẽ cập nhật tất cả các tài liệu phù hợp với tiêu chí đã chỉ định

Làm cách nào để kết nối MongoDB với PHP trong Ubuntu?

Cách thiết lập Apache, PHP & MongoDB trên Ubuntu 20. 04 .
điều kiện tiên quyết
Cập nhật hệ thống
Cài đặt máy chủ web Apache
Cài đặt PHP 8 với Mô-đun MongoDB
Cài đặt máy chủ cơ sở dữ liệu MongoDB
Tạo tệp PHPINFO