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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
--TEST--
MongoDB\Driver\WriteResult::getUpsertedIds() with client-generated values
--SKIPIF--
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
<?php skip_if_not_live(); ?>
<?php skip_if_not_clean(); ?>
--FILE--
<?php
require_once __DIR__ . "/../utils/basic.inc";
/* Do not test array or Regex types, which are not permitted to be used as an
* ID. If a regular expression is used in upsert criteria and does not match an
* existing document, the server generates a new ObjectId. */
$tests = [
null,
true,
1,
4.125,
'foo',
(object) [],
new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC),
new MongoDB\BSON\Decimal128('1234.5678'),
new MongoDB\BSON\Javascript('function(){}'),
new MongoDB\BSON\MaxKey,
new MongoDB\BSON\MinKey,
new MongoDB\BSON\ObjectId('586c18d86118fd6c9012dec1'),
new MongoDB\BSON\Timestamp(1234, 5678),
new MongoDB\BSON\UTCDateTime('1483479256924'),
];
$manager = create_test_manager();
$bulk = new MongoDB\Driver\BulkWrite;
foreach ($tests as $value) {
$bulk->update(['_id' => $value], ['$set' => ['x' => 1]], ['upsert' => true]);
}
$result = $manager->executeBulkWrite(NS, $bulk);
var_dump($result->getUpsertedIds());
?>
===DONE===
<?php exit(0); ?>
--EXPECTF--
array(14) {
[0]=>
NULL
[1]=>
bool(true)
[2]=>
int(1)
[3]=>
float(4.125)
[4]=>
string(3) "foo"
[5]=>
object(stdClass)#%d (%d) {
}
[6]=>
object(MongoDB\BSON\Binary)#%d (%d) {
["data"]=>
string(3) "foo"
["type"]=>
int(0)
}
[7]=>
object(MongoDB\BSON\Decimal128)#%d (%d) {
["dec"]=>
string(9) "1234.5678"
}
[8]=>
object(MongoDB\BSON\Javascript)#%d (%d) {
["code"]=>
string(12) "function(){}"
["scope"]=>
NULL
}
[9]=>
object(MongoDB\BSON\MaxKey)#%d (%d) {
}
[10]=>
object(MongoDB\BSON\MinKey)#%d (%d) {
}
[11]=>
object(MongoDB\BSON\ObjectId)#%d (%d) {
["oid"]=>
string(24) "586c18d86118fd6c9012dec1"
}
[12]=>
object(MongoDB\BSON\Timestamp)#%d (%d) {
["increment"]=>
string(4) "1234"
["timestamp"]=>
string(4) "5678"
}
[13]=>
object(MongoDB\BSON\UTCDateTime)#%d (%d) {
["milliseconds"]=>
string(13) "1483479256924"
}
}
===DONE===
|