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

Hvordan fjerner man et dokument refereret af et id i mongoDB fra php?

Du har brugt et normalt heltal (MongoInt32) som _id Mark. Og MongoInt32 er ikke det samme som MongoID. Det er to forskellige klasser. Du formodes at slette den med:

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

Yderligere oplysninger:

MongoId bruges som værdi for en _id felt, hvis du ikke indstil selv en værdi, f.eks. med:

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

Hvis du henter dette dokument, og var_dump(), vil du se:

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

Bemærkningen i dokumenterne betyder, at du ikke kan fjerne det dokument nu med:

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

Men i stedet skal du bruge:

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

Som sidste punkt vil jeg gerne fremhæve, at du ikke rigtig behøver at bruge new MongoInt32(1) i første omgang kan du bare bruge:

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

Du behøver kun MongoInt32/MongoInt64, hvis du er på en 32-bit platform (eller Windows) og har brug for at håndtere store tal.



  1. Gruppér efter datointervaller

  2. autentificeringsproblem med laravel private channel og laravel-echo-server

  3. Udtryk ændringssession hver anmodning

  4. MongoDB $sort