Worth noting that insert() accepts the array by reference
On successful insert the array is returned with the _id assigned by Mongo
<?php
$doc = array(
'key1' => 'yay',
'key2' => 'yipee',
);
?>
therefore becomes:
<?php
$doc = array(
'key1' => 'yay',
'key2' => 'yipee',
'_id' => '4a5c9100fbecbc00503debc8'
);
?>
Handy. Akin to mysql's SELECT LAST_INSERT_ID() without the hassle of having to send another query :-)
MongoCollection::insert
(PECL mongo >=0.9.0)
MongoCollection::insert — Inserts an array into the collection
Description
Parameters
- a
-
An array.
- safe
-
If the database should check that the insert was successful.
Return Values
If safe was set, returns an array containing the status of the insert. Otherwise, returns a boolean representing if the array was not empty (an empty array will not be inserted).
Errors/Exceptions
Throws MongoCursorException if safe is set and the insert fails. (Version 1.0.1+)
Examples
Example #1 MongoCollection::insert() _id example
Inserting an object will add an _id field to it, unless it is passed by reference.
<?php
$a = array('x' => 1);
$collection->insert($a);
var_dump($a)
$b = array('x' => 1);
$ref = &$b;
$collection->insert($ref);
var_dump($ref);
?>
The above example will output something similar to:
array(2) {
["x"]=>
int(1)
["_id"]=>
object(MongoId)#4 (0) {
}
}
array(1) {
["x"]=>
int(1)
}
Example #2 MongoCollection::insert() safe example
This example shows inserting two elements with the same _id, which causes a MongoCursorException to be thrown, as safe was set.
<?php
$person = array("name" => "Joe", "age" => 20);
$collection->insert($person, true);
// now $person has an _id field, so if we save it
// again, we will get an exception
try {
$collection->insert($person, true);
}
catch(MongoCursorException $e) {
echo "Can't save the same person twice!\n";
}
?>
See Also
MongoDB core docs on » insert.
MongoCollection::insert
14-Jul-2009 02:41
