Du har använt ett normalt heltal (MongoInt32) som _id
fält. Och MongoInt32 är inte samma sak som MongoID. De är två olika klasser. Du ska ta bort det med:
$collection->remove( array( '_id' => new MongoInt32(1) ) );
Ytterligare information:
MongoId används som värde för ett _id
om du inte gör det ställ in ett värde själv, till exempel med:
$collection->insert( array( 'cust_id' => 'abc124' ) );
Om du hämtar detta dokument och var_dump() kommer du att se:
array(2) {
'_id' =>
class MongoId#6 (1) {
public $$id =>
string(24) "51ee74e944670a09028d4fc9"
}
'cust_id' =>
string(6) "abc124"
}
Anteckningen i dokumenten betyder att du inte kan ta bort det dokumentet nu med:
$collection->remove( array( '_id' => '51ee74e944670a09028d4fc9' ) );
Men istället måste du använda:
$collection->remove( array( '_id' => new MongoID( '51ee74e944670a09028d4fc9' ) ) );
Som sista punkt vill jag ta upp att du egentligen inte behöver använda new MongoInt32(1)
i första hand kan du bara använda:
$document = array (
'_id' => 1,
'cust_id' => 'abc124'
);
Du behöver bara MongoInt32/MongoInt64 om du är på en 32-bitarsplattform (eller Windows) och behöver hantera stora antal.