MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come rimuovere un documento a cui fa riferimento un id in mongoDB da php?

Hai usato un intero normale (MongoInt32) come _id campo. E MongoInt32 non è la stessa cosa di MongoID. Sono due classi diverse. Dovresti eliminarlo con:

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

Informazioni aggiuntive:

MongoId viene utilizzato come valore per un _id campo se non imposta tu stesso un valore, ad esempio con:

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

Se recuperi questo documento e var_dump() vedrai:

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

La nota nei documenti significa che non puoi rimuovere quel documento ora con:

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

Ma invece dovrai usare:

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

Come ultimo punto vorrei sottolineare che non è necessario utilizzare new MongoInt32(1) in primo luogo, puoi semplicemente usare:

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

Hai solo bisogno di MongoInt32/MongoInt64 nel caso in cui ti trovi su una piattaforma a 32 bit (o Windows) e devi gestire grandi numeri.