Je hebt een normaal geheel getal (MongoInt32) gebruikt als _id
veld. En MongoInt32 is niet hetzelfde als MongoID. Het zijn twee verschillende klassen. U wordt verondersteld het te verwijderen met:
$collection->remove( array( '_id' => new MongoInt32(1) ) );
Aanvullende informatie:
MongoId wordt gebruikt als waarde voor een _id
veld als u niet stel zelf een waarde in, bijvoorbeeld met:
$collection->insert( array( 'cust_id' => 'abc124' ) );
Als u dit document en var_dump() ophaalt, ziet u:
array(2) {
'_id' =>
class MongoId#6 (1) {
public $$id =>
string(24) "51ee74e944670a09028d4fc9"
}
'cust_id' =>
string(6) "abc124"
}
De opmerking in de documenten betekent dat u dat document nu niet kunt verwijderen met:
$collection->remove( array( '_id' => '51ee74e944670a09028d4fc9' ) );
Maar in plaats daarvan moet u het volgende gebruiken:
$collection->remove( array( '_id' => new MongoID( '51ee74e944670a09028d4fc9' ) ) );
Als laatste punt wil ik naar voren brengen dat je niet echt new MongoInt32(1)
hoeft te gebruiken in de eerste plaats kun je gewoon gebruiken:
$document = array (
'_id' => 1,
'cust_id' => 'abc124'
);
Je hebt MongoInt32/MongoInt64 alleen nodig als je op een 32-bits platform (of Windows) werkt en met grote aantallen te maken hebt.