Използвали сте нормално цяло число (MongoInt32) като _id
поле. И MongoInt32 не е същото като MongoID. Те са два различни класа. Трябва да го изтриете с:
$collection->remove( array( '_id' => new MongoInt32(1) ) );
Допълнителна информация:
MongoId се използва като стойност за _id
поле, ако не задайте стойност сами, като например с:
$collection->insert( array( 'cust_id' => 'abc124' ) );
Ако извлечете този документ и var_dump(), които ще видите:
array(2) {
'_id' =>
class MongoId#6 (1) {
public $$id =>
string(24) "51ee74e944670a09028d4fc9"
}
'cust_id' =>
string(6) "abc124"
}
Бележката в документите означава, че не можете да премахнете този документ сега с:
$collection->remove( array( '_id' => '51ee74e944670a09028d4fc9' ) );
Но вместо това ще трябва да използвате:
$collection->remove( array( '_id' => new MongoID( '51ee74e944670a09028d4fc9' ) ) );
Като последна точка бих искал да повдигна, че всъщност не е нужно да използвате new MongoInt32(1)
на първо място, можете просто да използвате:
$document = array (
'_id' => 1,
'cust_id' => 'abc124'
);
MongoInt32/MongoInt64 ви трябва само в случай, че сте на 32-битова платформа (или Windows) и трябва да се справите с големи числа.