MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment supprimer un document référencé par un identifiant dans mongoDB depuis php ?

Vous avez utilisé un entier normal (MongoInt32) comme _id domaine. Et MongoInt32 n'est pas le même que MongoID. Ce sont deux classes différentes. Vous êtes censé le supprimer avec :

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

Informations supplémentaires :

MongoId est utilisé comme valeur pour un _id champ si vous ne le faites pas définissez vous-même une valeur, par exemple avec :

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

Si vous récupérez ce document, et var_dump() que vous verrez :

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

La note dans la documentation signifie que vous ne pouvez pas supprimer ce document maintenant avec :

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

Mais à la place, vous devrez utiliser :

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

Comme dernier point, je voudrais souligner que vous n'avez pas vraiment besoin d'utiliser new MongoInt32(1) en premier lieu, vous pouvez simplement utiliser :

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

Vous n'avez besoin de MongoInt32/MongoInt64 que si vous êtes sur une plate-forme 32 bits (ou Windows) et que vous devez gérer de grands nombres.