MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como remover um documento referenciado por um id no mongoDB do php?


Você usou um inteiro normal (MongoInt32) como _id campo. E MongoInt32 não é o mesmo que MongoID. São duas classes diferentes. Você deve excluí-lo com:
$collection->remove( array( '_id' => new MongoInt32(1) ) );

Informações adicionais:

MongoId é usado como valor para um _id campo se você não defina um valor você mesmo, como com:
$collection->insert( array( 'cust_id' => 'abc124' ) );

Se você recuperar este documento e var_dump(), verá:
array(2) {
  '_id' =>
  class MongoId#6 (1) {
    public $$id =>
    string(24) "51ee74e944670a09028d4fc9"
  }
  'cust_id' =>
  string(6) "abc124"
}

A nota nos documentos significa que você não pode remover esse documento agora com:
$collection->remove( array( '_id' => '51ee74e944670a09028d4fc9' ) );

Mas, em vez disso, você precisará usar:
$collection->remove( array( '_id' => new MongoID( '51ee74e944670a09028d4fc9' ) ) );

Como último ponto, gostaria de salientar que você realmente não precisa usar new MongoInt32(1) em primeiro lugar, você pode simplesmente usar:
$document = array (
    '_id' => 1,
    'cust_id' => 'abc124'
);

Você só precisa do MongoInt32/MongoInt64 caso esteja em uma plataforma de 32 bits (ou Windows) e precise lidar com números grandes.