Jako _id
jste použili normální celé číslo (MongoInt32). pole. A MongoInt32 není totéž jako MongoID. Jsou to dvě různé třídy. Předpokládá se, že jej smažete pomocí:
$collection->remove( array( '_id' => new MongoInt32(1) ) );
Další informace:
MongoId se používá jako hodnota pro _id
pole, pokud neděláte nastavte hodnotu sami, například pomocí:
$collection->insert( array( 'cust_id' => 'abc124' ) );
Pokud načtete tento dokument a var_dump(), které uvidíte:
array(2) {
'_id' =>
class MongoId#6 (1) {
public $$id =>
string(24) "51ee74e944670a09028d4fc9"
}
'cust_id' =>
string(6) "abc124"
}
Poznámka v dokumentech znamená, že daný dokument nyní nemůžete odstranit pomocí:
$collection->remove( array( '_id' => '51ee74e944670a09028d4fc9' ) );
Ale místo toho budete muset použít:
$collection->remove( array( '_id' => new MongoID( '51ee74e944670a09028d4fc9' ) ) );
Jako poslední bod bych rád upozornil, že ve skutečnosti nemusíte používat new MongoInt32(1)
v první řadě můžete použít:
$document = array (
'_id' => 1,
'cust_id' => 'abc124'
);
MongoInt32/MongoInt64 potřebujete pouze v případě, že používáte 32bitovou platformu (nebo Windows) a potřebujete se vypořádat s velkým počtem.