Tìm kiếm là cách bạn truy vấn dữ liệu trong MongoDB. Nó tương tự như câu lệnh "chọn" trong ngôn ngữ truy vấn SQL
Hãy chuẩn bị cơ sở dữ liệu cho cuộc biểu tình của chúng tôi
$conn = new Mongo[]; $db = $conn->selectDB['testfind']; $collection = $db->post; $collection->save[array[ "title" => "post title", "content" => "post content", "date" => strtotime[date["r"]], "author" => "david", "readcount" => 3 ]];
Chúng tôi tạo cơ sở dữ liệu và bộ sưu tập trong db, sau đó chèn một số tài liệu vào đó
Tìm kiếm đơn giản nhất sẽ trả về toàn bộ bộ sưu tập
$result = $collection->find[];
find trả về một con trỏ. Giống như con trỏ trong RDBMS, tập hợp kết quả sẽ không được gửi lại trong một lần. Điều này là hợp lý, nếu một bộ sưu tập chứa hàng triệu bản ghi, một truy vấn find[] duy nhất có thể làm sập máy chủ
Php cung cấp trình điều khiển mongodb để kết nối với cơ sở dữ liệu mongoDB. Sau khi cài đặt nó, chúng ta có thể thực hiện các thao tác với cơ sở dữ liệu bằng cách sử dụng lệnh php. Ở đây, chúng tôi đang sử dụng Ubuntu 16. 04 để tạo ví dụ. Ví dụ này bao gồm các bước sau
1] Cài đặt trình điều khiển
2] Chỉnh sửa php. tập tin ini
Nó được lưu trữ trong thư mục máy chủ apache /etc/php/7. 0/apache2/php. ban đầu
3] Cài đặt thư viện mongo-php
Sau đây là cách ưa thích để cài đặt thư viện này với Composer
4] Tạo tập lệnh Php
// kết nối. php
5] Thực thi tập lệnh Php
Thực thi tập lệnh này trên máy chủ localhost. Nó sẽ tạo cơ sở dữ liệu và lưu trữ dữ liệu vào mongodb
Trong hướng dẫn này, chúng tôi trình bày cách làm việc với MongoDB trong PHP. Chúng tôi sử dụng trình điều khiển
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install1 mới cho PHP. Có một hướng dẫn PHP ngắn gọn trên ZetCode
MongoDB là cơ sở dữ liệu định hướng tài liệu đa nền tảng NoSQL. Đây là một trong những cơ sở dữ liệu phổ biến nhất hiện có. MongoDB được phát triển bởi MongoDB Inc. và được xuất bản dưới dạng phần mềm mã nguồn mở và miễn phí
Một bản ghi trong MongoDB là một tài liệu, là một cấu trúc dữ liệu bao gồm các cặp trường và giá trị. Các tài liệu MongoDB tương tự như các đối tượng JSON. Giá trị của các trường có thể bao gồm các tài liệu, mảng và mảng tài liệu khác. MongoDB lưu trữ tài liệu trong bộ sưu tập. Bộ sưu tập tương tự như bảng trong cơ sở dữ liệu quan hệ và tài liệu tương tự như hàng
Lệnh sau có thể được sử dụng để cài đặt MongoDB trên Linux dựa trên Debian
$ sudo apt-get install mongodb
Lệnh cài đặt các gói cần thiết đi kèm với MongoDB
$ sudo service mongodb status mongodb start/running, process 975
Với lệnh
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install2, chúng tôi kiểm tra trạng thái của máy chủ
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install1
$ sudo service mongodb start mongodb start/running, process 6448
Máy chủ
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install1 được khởi động bằng lệnh
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install5
Tạo cơ sở dữ liệu
Công cụ
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install6 là giao diện shell JavaScript tương tác với MongoDB, cung cấp giao diện cho quản trị viên hệ thống cũng như cách để nhà phát triển kiểm tra các truy vấn và hoạt động trực tiếp với cơ sở dữ liệu
$ mongo testdb MongoDB shell version: 2.4.9 connecting to: testdb > db testdb > db.cars.insert[{name: "Audi", price: 52642}] > db.cars.insert[{name: "Mercedes", price: 57127}] > db.cars.insert[{name: "Skoda", price: 9000}] > db.cars.insert[{name: "Volvo", price: 29000}] > db.cars.insert[{name: "Bentley", price: 350000}] > db.cars.insert[{name: "Citroen", price: 21000}] > db.cars.insert[{name: "Hummer", price: 41400}] > db.cars.insert[{name: "Volkswagen", price: 21600}]
Chúng tôi tạo cơ sở dữ liệu
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install7 và chèn tám tài liệu vào bộ sưu tập
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install8
Có hai trình điều khiển có sẵn. trình điều khiển
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install6 kế thừa và trình điều khiển
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install1 mới. Trong hướng dẫn này, chúng tôi làm việc với trình điều khiển
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install1 mới
Tiếp theo, chúng tôi trình bày cách cài đặt trình điều khiển PHP MongoDB theo cách thủ công
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install
Chúng tôi tải xuống các nguồn và cài đặt trình điều khiển từ chúng
extension=mongodb.so
Chúng tôi thêm phần mở rộng
extension=mongodb.so2 vào tệp
extension=mongodb.so3
Thống kê cơ sở dữ liệu
Ví dụ đầu tiên kết nối với cơ sở dữ liệu
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install7 và lấy số liệu thống kê của nó
extension=mongodb.so5 chịu trách nhiệm duy trì kết nối với MongoDB.
extension=mongodb.so6 đại diện cho một lệnh cơ sở dữ liệu. Khi thành công, lệnh trả về
extension=mongodb.so7
1]]; $res = $mng->executeCommand["testdb", $stats]; $stats = current[$res->toArray[]]; print_r[$stats]; } catch [MongoDB\Driver\Exception\Exception $e] { $filename = basename[__FILE__]; echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage[], "\n"; echo "In file:", $e->getFile[], "\n"; echo "On line:", $e->getLine[], "\n"; } ?>
Ví dụ kết nối với cơ sở dữ liệu
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install7 và thực hiện lệnh
extension=mongodb.so9. Nó cho thấy một số thống kê cơ sở dữ liệu
$mng = new MongoDB\Driver\Manager["mongodb://localhost:27017"];
Với lớp
extension=mongodb.so5, chúng tôi kết nối với cơ sở dữ liệu
$ git clone //github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install7. 27017 là cổng mặc định mà máy chủ MongoDB lắng nghe
$res = $mng->executeCommand["testdb", $stats];
extension=mongodb.so6 được sử dụng để thực thi lệnh
extension=mongodb.so9
$stats = current[$res->toArray[]];
Phương thức
1]]; $res = $mng->executeCommand["testdb", $stats]; $stats = current[$res->toArray[]]; print_r[$stats]; } catch [MongoDB\Driver\Exception\Exception $e] { $filename = basename[__FILE__]; echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage[], "\n"; echo "In file:", $e->getFile[], "\n"; echo "On line:", $e->getLine[], "\n"; } ?>4 trả về một mảng chứa tất cả các kết quả cho con trỏ này và hàm
1]]; $res = $mng->executeCommand["testdb", $stats]; $stats = current[$res->toArray[]]; print_r[$stats]; } catch [MongoDB\Driver\Exception\Exception $e] { $filename = basename[__FILE__]; echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage[], "\n"; echo "In file:", $e->getFile[], "\n"; echo "On line:", $e->getLine[], "\n"; } ?>5 trả về phần tử hiện tại của mảng. Trong trường hợp của chúng ta, mảng có một phần tử
$ sudo service mongodb status mongodb start/running, process 9750
Hàm
1]]; $res = $mng->executeCommand["testdb", $stats]; $stats = current[$res->toArray[]]; print_r[$stats]; } catch [MongoDB\Driver\Exception\Exception $e] { $filename = basename[__FILE__]; echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage[], "\n"; echo "In file:", $e->getFile[], "\n"; echo "On line:", $e->getLine[], "\n"; } ?>6 in một biểu diễn mà con người có thể đọc được của biến
1]]; $res = $mng->executeCommand["testdb", $stats]; $stats = current[$res->toArray[]]; print_r[$stats]; } catch [MongoDB\Driver\Exception\Exception $e] { $filename = basename[__FILE__]; echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage[], "\n"; echo "In file:", $e->getFile[], "\n"; echo "On line:", $e->getLine[], "\n"; } ?>7
$ sudo service mongodb status mongodb start/running, process 9751
Đây là kết quả của chương trình
1]]; $res = $mng->executeCommand["testdb", $stats]; $stats = current[$res->toArray[]]; print_r[$stats]; } catch [MongoDB\Driver\Exception\Exception $e] { $filename = basename[__FILE__]; echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage[], "\n"; echo "In file:", $e->getFile[], "\n"; echo "On line:", $e->getLine[], "\n"; } ?>8
Lệnh
1]]; $res = $mng->executeCommand["testdb", $stats]; $stats = current[$res->toArray[]]; print_r[$stats]; } catch [MongoDB\Driver\Exception\Exception $e] { $filename = basename[__FILE__]; echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage[], "\n"; echo "In file:", $e->getFile[], "\n"; echo "On line:", $e->getLine[], "\n"; } ?>9 cung cấp danh sách tất cả các cơ sở dữ liệu hiện có
$ sudo service mongodb status mongodb start/running, process 9752
Ví dụ in cơ sở dữ liệu có sẵn trong MongoDB
$ sudo service mongodb status mongodb start/running, process 9753
Chúng tôi thực hiện lệnh
1]]; $res = $mng->executeCommand["testdb", $stats]; $stats = current[$res->toArray[]]; print_r[$stats]; } catch [MongoDB\Driver\Exception\Exception $e] { $filename = basename[__FILE__]; echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage[], "\n"; echo "In file:", $e->getFile[], "\n"; echo "On line:", $e->getLine[], "\n"; } ?>9. Lệnh được thực thi trên cơ sở dữ liệu
$mng = new MongoDB\Driver\Manager["mongodb://localhost:27017"];1
$ sudo service mongodb status mongodb start/running, process 9754
Lệnh trả về một tài liệu kết quả duy nhất, chứa thông tin cho tất cả các cơ sở dữ liệu trong trường mảng
$mng = new MongoDB\Driver\Manager["mongodb://localhost:27017"];2
$ sudo service mongodb status mongodb start/running, process 9755
Chúng tôi đi qua mảng cơ sở dữ liệu và in tên của các cơ sở dữ liệu có sẵn
$ sudo service mongodb status mongodb start/running, process 9756
Trên máy cục bộ của chúng tôi, chúng tôi có ba cơ sở dữ liệu này
Đọc dữ liệu
$mng = new MongoDB\Driver\Manager["mongodb://localhost:27017"];3 là một đối tượng giá trị đại diện cho một truy vấn cơ sở dữ liệu
$ sudo service mongodb status mongodb start/running, process 9757
Ví dụ đọc tất cả dữ liệu từ bộ sưu tập
$mng = new MongoDB\Driver\Manager["mongodb://localhost:27017"];4
$ sudo service mongodb status mongodb start/running, process 9758
Một đối tượng
$mng = new MongoDB\Driver\Manager["mongodb://localhost:27017"];3 được tạo. Nếu chúng ta truyền vào một mảng trống, nó sẽ đọc tất cả dữ liệu
$ sudo service mongodb status mongodb start/running, process 9759
$mng = new MongoDB\Driver\Manager["mongodb://localhost:27017"];6 thực hiện truy vấn. Tham số đầu tiên là tên bộ sưu tập và tham số thứ hai là truy vấn
$ sudo service mongodb start mongodb start/running, process 64480
Chúng tôi lặp lại tất cả các tài liệu phù hợp
$ sudo service mongodb start mongodb start/running, process 64481
Đây là đầu ra của tập lệnh
$mng = new MongoDB\Driver\Manager["mongodb://localhost:27017"];7
$mng = new MongoDB\Driver\Manager["mongodb://localhost:27017"];3 chứa tham số bộ lọc được sử dụng để lọc dữ liệu
$ sudo service mongodb start mongodb start/running, process 64482
Ví dụ tìm kiếm giá xe Volkswagen
$ sudo service mongodb start mongodb start/running, process 64483
Chúng tôi cung cấp tham số bộ lọc cho
$mng = new MongoDB\Driver\Manager["mongodb://localhost:27017"];3
$ sudo service mongodb start mongodb start/running, process 64484
Chúng tôi in tên và giá của chiếc xe đã chọn. Chúng tôi đảm bảo rằng biến được trả về không trống bằng hàm
$res = $mng->executeCommand["testdb", $stats];0
$ sudo service mongodb start mongodb start/running, process 64485
Đây là đầu ra của tập lệnh
$res = $mng->executeCommand["testdb", $stats];1
dự đoán
Phép chiếu có thể được sử dụng để chỉ định trường nào sẽ được trả về
$ sudo service mongodb start mongodb start/running, process 64486
Trong ví dụ này, chúng tôi ẩn trường đầu tiên—các
$res = $mng->executeCommand["testdb", $stats];2
$ sudo service mongodb start mongodb start/running, process 64487
Các phép chiếu được xác định trong một mảng
$res = $mng->executeCommand["testdb", $stats];3. Ở đây chúng tôi ẩn trường
$res = $mng->executeCommand["testdb", $stats];2
$ sudo service mongodb start mongodb start/running, process 64488
Các phép chiếu được thông qua trong đối số thứ hai của
$mng = new MongoDB\Driver\Manager["mongodb://localhost:27017"];3
$ sudo service mongodb start mongodb start/running, process 64489
Đây là đầu ra một phần của tập lệnh
$res = $mng->executeCommand["testdb", $stats];6. Chỉ các trường tên và giá được trả lại
Tùy chọn truy vấn
$res = $mng->executeCommand["testdb", $stats];7 chỉ định số lượng tài liệu sẽ được trả lại và tùy chọn
$res = $mng->executeCommand["testdb", $stats];8 thứ tự sắp xếp
$ mongo testdb MongoDB shell version: 2.4.9 connecting to: testdb > db testdb > db.cars.insert[{name: "Audi", price: 52642}] > db.cars.insert[{name: "Mercedes", price: 57127}] > db.cars.insert[{name: "Skoda", price: 9000}] > db.cars.insert[{name: "Volvo", price: 29000}] > db.cars.insert[{name: "Bentley", price: 350000}] > db.cars.insert[{name: "Citroen", price: 21000}] > db.cars.insert[{name: "Hummer", price: 41400}] > db.cars.insert[{name: "Volkswagen", price: 21600}]0
Ví dụ đọc tất cả dữ liệu từ bộ sưu tập
$mng = new MongoDB\Driver\Manager["mongodb://localhost:27017"];4, giới hạn đầu ra ở năm ô tô và sắp xếp theo tên ô tô theo thứ tự tăng dần
$ mongo testdb MongoDB shell version: 2.4.9 connecting to: testdb > db testdb > db.cars.insert[{name: "Audi", price: 52642}] > db.cars.insert[{name: "Mercedes", price: 57127}] > db.cars.insert[{name: "Skoda", price: 9000}] > db.cars.insert[{name: "Volvo", price: 29000}] > db.cars.insert[{name: "Bentley", price: 350000}] > db.cars.insert[{name: "Citroen", price: 21000}] > db.cars.insert[{name: "Hummer", price: 41400}] > db.cars.insert[{name: "Volkswagen", price: 21600}]1
Chúng tôi chỉ định các tùy chọn
$res = $mng->executeCommand["testdb", $stats];8 và
$res = $mng->executeCommand["testdb", $stats];7 trong tham số thứ hai của truy vấn
$ mongo testdb MongoDB shell version: 2.4.9 connecting to: testdb > db testdb > db.cars.insert[{name: "Audi", price: 52642}] > db.cars.insert[{name: "Mercedes", price: 57127}] > db.cars.insert[{name: "Skoda", price: 9000}] > db.cars.insert[{name: "Volvo", price: 29000}] > db.cars.insert[{name: "Bentley", price: 350000}] > db.cars.insert[{name: "Citroen", price: 21000}] > db.cars.insert[{name: "Hummer", price: 41400}] > db.cars.insert[{name: "Volkswagen", price: 21600}]2
Đây là đầu ra của tập lệnh
$stats = current[$res->toArray[]];2
Phương thức
$stats = current[$res->toArray[]];3 thực thi một hoặc nhiều thao tác ghi, bao gồm chèn, cập nhật và xóa
$ mongo testdb MongoDB shell version: 2.4.9 connecting to: testdb > db testdb > db.cars.insert[{name: "Audi", price: 52642}] > db.cars.insert[{name: "Mercedes", price: 57127}] > db.cars.insert[{name: "Skoda", price: 9000}] > db.cars.insert[{name: "Volvo", price: 29000}] > db.cars.insert[{name: "Bentley", price: 350000}] > db.cars.insert[{name: "Citroen", price: 21000}] > db.cars.insert[{name: "Hummer", price: 41400}] > db.cars.insert[{name: "Volkswagen", price: 21600}]3
Tập lệnh chèn một ô tô mới, cập nhật một ô tô và xóa một ô tô
$ mongo testdb MongoDB shell version: 2.4.9 connecting to: testdb > db testdb > db.cars.insert[{name: "Audi", price: 52642}] > db.cars.insert[{name: "Mercedes", price: 57127}] > db.cars.insert[{name: "Skoda", price: 9000}] > db.cars.insert[{name: "Volvo", price: 29000}] > db.cars.insert[{name: "Bentley", price: 350000}] > db.cars.insert[{name: "Citroen", price: 21000}] > db.cars.insert[{name: "Hummer", price: 41400}] > db.cars.insert[{name: "Volkswagen", price: 21600}]4
$stats = current[$res->toArray[]];4 thu thập một hoặc nhiều thao tác ghi sẽ được gửi đến máy chủ
$ mongo testdb MongoDB shell version: 2.4.9 connecting to: testdb > db testdb > db.cars.insert[{name: "Audi", price: 52642}] > db.cars.insert[{name: "Mercedes", price: 57127}] > db.cars.insert[{name: "Skoda", price: 9000}] > db.cars.insert[{name: "Volvo", price: 29000}] > db.cars.insert[{name: "Bentley", price: 350000}] > db.cars.insert[{name: "Citroen", price: 21000}] > db.cars.insert[{name: "Hummer", price: 41400}] > db.cars.insert[{name: "Volkswagen", price: 21600}]5
Đây là một tài liệu mới được chèn vào.
$stats = current[$res->toArray[]];5 tạo một ObjectId mới. Đó là một giá trị được sử dụng để xác định duy nhất các tài liệu trong một bộ sưu tập
$ mongo testdb MongoDB shell version: 2.4.9 connecting to: testdb > db testdb > db.cars.insert[{name: "Audi", price: 52642}] > db.cars.insert[{name: "Mercedes", price: 57127}] > db.cars.insert[{name: "Skoda", price: 9000}] > db.cars.insert[{name: "Volvo", price: 29000}] > db.cars.insert[{name: "Bentley", price: 350000}] > db.cars.insert[{name: "Citroen", price: 21000}] > db.cars.insert[{name: "Hummer", price: 41400}] > db.cars.insert[{name: "Volkswagen", price: 21600}]6
Thao tác chèn được tạo bằng phương thức
$stats = current[$res->toArray[]];6
$ mongo testdb MongoDB shell version: 2.4.9 connecting to: testdb > db testdb > db.cars.insert[{name: "Audi", price: 52642}] > db.cars.insert[{name: "Mercedes", price: 57127}] > db.cars.insert[{name: "Skoda", price: 9000}] > db.cars.insert[{name: "Volvo", price: 29000}] > db.cars.insert[{name: "Bentley", price: 350000}] > db.cars.insert[{name: "Citroen", price: 21000}] > db.cars.insert[{name: "Hummer", price: 41400}] > db.cars.insert[{name: "Volkswagen", price: 21600}]7
Thao tác cập nhật được tạo bằng phương thức
$stats = current[$res->toArray[]];7. Toán tử
$stats = current[$res->toArray[]];8 thay thế giá trị của một trường bằng giá trị đã chỉ định