Użyłeś normalnej liczby całkowitej (MongoInt32) jako _id
pole. A MongoInt32 to nie to samo co MongoID. Są to dwie różne klasy. Powinieneś go usunąć za pomocą:
$collection->remove( array( '_id' => new MongoInt32(1) ) );
Informacje dodatkowe:
MongoId jest używany jako wartość dla _id
pole, jeśli nie ustaw wartość samodzielnie, na przykład za pomocą:
$collection->insert( array( 'cust_id' => 'abc124' ) );
Jeśli pobierzesz ten dokument i var_dump(), które zobaczysz:
array(2) {
'_id' =>
class MongoId#6 (1) {
public $$id =>
string(24) "51ee74e944670a09028d4fc9"
}
'cust_id' =>
string(6) "abc124"
}
Uwaga w dokumentach oznacza, że nie możesz teraz usunąć tego dokumentu za pomocą:
$collection->remove( array( '_id' => '51ee74e944670a09028d4fc9' ) );
Ale zamiast tego będziesz musiał użyć:
$collection->remove( array( '_id' => new MongoID( '51ee74e944670a09028d4fc9' ) ) );
Na koniec chciałbym wspomnieć, że tak naprawdę nie musisz używać new MongoInt32(1)
po pierwsze, możesz po prostu użyć:
$document = array (
'_id' => 1,
'cust_id' => 'abc124'
);
Potrzebujesz MongoInt32/MongoInt64 tylko w przypadku, gdy korzystasz z platformy 32-bitowej (lub Windows) i musisz radzić sobie z dużymi liczbami.