DANH MỤC: PHP&MONGODB

Bài 5: Insert dữ liệu vào trong MongoDB bằng PHP


Ở bài trước mình đã giới thiệu với mọi người cách truy xuất đến các collection trong MongoDB rồi. Sau khi đã truy xuất được đến các collection rồi thì bài này chúng ta sẽ thực hiện thêm dữ liệu vào trong các collection.

1, Thêm một bản ghi.

Để có thể thêm một bản ghi vào trong MongoDB thì các bạn thực hiện phương thức insertOne() với cú pháp như sau:

$collection->insertOne(data, options);

Trong đó:

  • $collection là obection chứa collection mà bạn đã trỏ tới.
  • data là mảng dữ liệu mà bạn muốn thêm vào trong collection.
  • option là mảng chứa các thông số cấu hình như: writeconcern, bypassDocumentValidation.

VD:  Mình sẽ thực hiện thêm một bản ghi vào trong collection Post.

<?php
use MongoDB\Client;

require_once "vendor/autoload.php";

// khoi tao class Client
$conn = new Client("mongodb://127.0.0.1:27017");

//select database
$db = $conn->tuts;

//selection collection
$post = $db->Post;

//insert
$insertResult = $post->insertOne([
    'title'    => 'Second Post',
    'content'  => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Odio harum necessitatibus eius magnam, doloribus explicabo omnis natus alias, nisi dolorum ea ab. Nobis quo magnam aliquid molestias, ipsum nihil eum.',
    'category' => 'Foo',
]);

//dump
var_dump($insertResult);
die();

Và MongoDB sẽ trả về Write Result Classes có các thông số như sau nếu dữ liệu được thêm thành công. Còn ngược lại nếu như không thành công thì nó sẽ trả về một error exception.

object(MongoDB\InsertOneResult)#15 (3) {
  ["writeResult":"MongoDB\InsertOneResult":private]=>
  object(MongoDB\Driver\WriteResult)#14 (9) {
    ["nInserted"]=>
    int(1)
    ["nMatched"]=>
    int(0)
    ["nModified"]=>
    int(0)
    ["nRemoved"]=>
    int(0)
    ["nUpserted"]=>
    int(0)
    ["upsertedIds"]=>
    array(0) {
    }
    ["writeErrors"]=>
    array(0) {
    }
    ["writeConcernError"]=>
    NULL
    ["writeConcern"]=>
    object(MongoDB\Driver\WriteConcern)#12 (0) {
    }
  }
  ["insertedId":"MongoDB\InsertOneResult":private]=>
  object(MongoDB\BSON\ObjectId)#13 (1) {
    ["oid"]=>
    string(24) "5a2b4d166e14730a780023f3"
  }
  ["isAcknowledged":"MongoDB\InsertOneResult":private]=>
  bool(true)
}

2, Thêm nhiều bản ghi.

Để có thể thêm được nhiều dữ liệu một lúc thì lúc này chúng ta cần phải sử dụng phương thức insertMany() với cú pháp tương tự như đối với phương thức insertOne().

VD: Mình sẽ thực hiện thêm 2 bản ghi vào trong mongoDB sử dụng phương thức insertMany().

<?php
use MongoDB\Client;

require_once "vendor/autoload.php";

// khoi tao class Client
$conn = new Client("mongodb://127.0.0.1:27017");

//select database
$db = $conn->tuts;

//selection collection
$post = $db->Post;

//insert
$insertResult = $post->insertMany([
    [
        'title'    => 'Foo Post',
        'content'  => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Odio harum necessitatibus eius magnam, doloribus explicabo omnis natus alias, nisi dolorum ea ab. Nobis quo magnam aliquid molestias, ipsum nihil eum.',
        'category' => 'Foo',
    ],
    [
        'title'    => 'Bar Post',
        'content'  => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Odio harum necessitatibus eius magnam, doloribus explicabo omnis natus alias, nisi dolorum ea ab. Nobis quo magnam aliquid molestias, ipsum nihil eum.',
        'category' => 'Bar'],
]);

//dump
var_dump($insertResult);
die();

Và cũng tương tự như đối với phương thức insertOne() thì phương thức insertMany() cũng trả về Write Result Classes nếu thành công và ngược lại nếu có lỗi xảy ra thì nó sẽ raise exception.


object(MongoDB\InsertManyResult)#16 (3) {
  ["writeResult":"MongoDB\InsertManyResult":private]=>
  object(MongoDB\Driver\WriteResult)#15 (9) {
    ["nInserted"]=>
    int(2)
    ["nMatched"]=>
    int(0)
    ["nModified"]=>
    int(0)
    ["nRemoved"]=>
    int(0)
    ["nUpserted"]=>
    int(0)
    ["upsertedIds"]=>
    array(0) {
    }
    ["writeErrors"]=>
    array(0) {
    }
    ["writeConcernError"]=>
    NULL
    ["writeConcern"]=>
    object(MongoDB\Driver\WriteConcern)#12 (0) {
    }
  }
  ["insertedIds":"MongoDB\InsertManyResult":private]=>
  array(2) {
    [0]=>
    object(MongoDB\BSON\ObjectId)#13 (1) {
      ["oid"]=>
      string(24) "5a2b4f536e14730a780023f7"
    }
    [1]=>
    object(MongoDB\BSON\ObjectId)#14 (1) {
      ["oid"]=>
      string(24) "5a2b4f536e14730a780023f8"
    }
  }
  ["isAcknowledged":"MongoDB\InsertManyResult":private]=>
  bool(true)
}

3, Lời kết.

Phần trên mình có nói đến Write Result Classes, các bạn tạm thời cứ biết nó trả về một object đã còn truy vấn đến object đó như thế nào mình sẽ giải thích vào một bài khác.

Nguồn: Toidicode.com

Thông tin tác giả

Thanh Tai (thanhtaivtt)

Thanh Tai (thanhtaivtt)

The best way to learn is to teach

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia