sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo eliminar un documento al que hace referencia una identificación en mongoDB desde php?

Has usado un entero normal (MongoInt32) como _id campo. Y MongoInt32 no es lo mismo que MongoID. Son dos clases diferentes. Se supone que debes eliminarlo con:

$collection->remove( array( '_id' => new MongoInt32(1) ) );

Información adicional:

MongoId se usa como valor para un _id campo si no establezca un valor usted mismo, como con:

$collection->insert( array( 'cust_id' => 'abc124' ) );

Si recupera este documento y var_dump() verá:

array(2) {
  '_id' =>
  class MongoId#6 (1) {
    public $$id =>
    string(24) "51ee74e944670a09028d4fc9"
  }
  'cust_id' =>
  string(6) "abc124"
}

La nota en los documentos significa que no puede eliminar ese documento ahora con:

$collection->remove( array( '_id' => '51ee74e944670a09028d4fc9' ) );

Pero en su lugar necesitará usar:

$collection->remove( array( '_id' => new MongoID( '51ee74e944670a09028d4fc9' ) ) );

Como último punto, me gustaría plantear que realmente no tiene que usar new MongoInt32(1) en primer lugar, puedes usar:

$document = array (
    '_id' => 1,
    'cust_id' => 'abc124'
);

Solo necesita MongoInt32/MongoInt64 en caso de que esté en una plataforma de 32 bits (o Windows) y necesite manejar grandes números.