MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie entferne ich ein Dokument, auf das in MongoDB von einer ID verwiesen wird, aus PHP?

Als _id haben Sie eine normale Ganzzahl (MongoInt32) verwendet Feld. Und MongoInt32 ist nicht dasselbe wie MongoID. Das sind zwei verschiedene Klassen. Sie sollen es löschen mit:

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

Zusätzliche Informationen:

MongoId wird als Wert für eine _id verwendet Feld, wenn Sie es nicht tun setzen Sie selbst einen Wert, z. B. mit:

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

Wenn Sie dieses Dokument und var_dump() abrufen, sehen Sie:

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

Der Hinweis in den Dokumenten bedeutet, dass Sie dieses Dokument jetzt nicht entfernen können mit:

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

Aber stattdessen müssen Sie verwenden:

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

Als letzten Punkt möchte ich ansprechen, dass Sie nicht unbedingt new MongoInt32(1) verwenden müssen an erster Stelle können Sie einfach verwenden:

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

Sie benötigen MongoInt32/MongoInt64 nur, falls Sie auf einer 32-Bit-Plattform (oder Windows) arbeiten und mit großen Zahlen umgehen müssen.