文字

MongoDB\Driver\BulkWrite::__construct

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::__constructCreate a new BulkWrite

说明

public MongoDB\Driver\BulkWrite::__construct ([ array $options ] )

Constructs a new ordered (default) or unordered MongoDB\Driver\BulkWrite.

参数

options ( array )

options
Option Type Description Default
ordered bool Ordered operations ( TRUE ) are executed serially on the MongoDB server, while unordered operations ( FALSE ) are sent to the server in an arbitrary order and may be executed in parallel. TRUE

错误/异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\BulkWrite::__construct() example

<?php

$bulk 
= new  MongoDB \ Driver \ BulkWrite ([ 'ordered'  =>  true ]);
$bulk -> delete ([]);
$bulk -> insert ([ '_id'  =>  1 'x'  =>  1 ]);
$bulk -> insert ([ '_id'  =>  2 'x'  =>  2 ]);
$bulk -> update (
    [
'x'  =>  2 ],
    [
'$set'  => [ 'x'  =>  1 ]],
    [
'limit'  =>  1 'upsert'  =>  false ]
);
$bulk -> delete ([ 'x'  =>  1 ], [ 'limit'  =>  1 ]);
$bulk -> update (
    [
'_id'  =>  3 ],
    [
'$set'  => [ 'x'  =>  3 ]],
    [
'limit'  =>  1 'upsert'  =>  true ]
);

$manager  = new  MongoDB \ Driver \ Manager ( 'mongodb://localhost:27017' );
$writeConcern  = new  MongoDB \ Driver \ WriteConcern ( MongoDB \ Driver \ WriteConcern :: MAJORITY 1000 );

try {
    
$result  $manager -> executeBulkWrite ( 'db.collection' $bulk $writeConcern );
} catch (
MongoDB \ Driver \ Exception \ BulkWriteException $e ) {
    
$result  $e -> getWriteResult ();

    
// Check if the write concern could not be fulfilled
    
if ( $writeConcernError  $result -> getWriteConcernError ()) {
        
printf ( "%s (%d): %s\n" ,
            
$writeConcernError -> getMessage (),
            
$writeConcernError -> getCode (),
            
var_export ( $writeConcernError -> getInfo (),  true )
        );
    }

    
// Check if any write operations did not complete at all
    
foreach ( $result -> getWriteErrors () as  $writeError ) {
        
printf ( "Operation#%d: %s (%d)\n" ,
            
$writeError -> getIndex (),
            
$writeError -> getMessage (),
            
$writeError -> getCode ()
        );
    }
} catch (
MongoDB \ Driver \ Exception \ Exception $e ) {
    
printf ( "Other error: %s\n" $e -> getMessage ());
    exit;
}

printf ( "Inserted %d document(s)\n" $result -> getInsertedCount ());
printf ( "Updated  %d document(s)\n" $result -> getModifiedCount ());
printf ( "Upserted %d document(s)\n" $result -> getUpsertedCount ());
printf ( "Deleted  %d document(s)\n" $result -> getDeletedCount ());

?>

以上例程会输出:

Inserted 2 document(s)
Updated  1 document(s)
Upserted 1 document(s)
Deleted  1 document(s)

参见

  • MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations
  • MongoDB\Driver\WriteResult
上一篇: 下一篇: