sql >> Database >  >> NoSQL >> MongoDB

Hoe een document waarnaar wordt verwezen door een id in mongoDB uit php verwijderen?

Je hebt een normaal geheel getal (MongoInt32) gebruikt als _id veld. En MongoInt32 is niet hetzelfde als MongoID. Het zijn twee verschillende klassen. U wordt verondersteld het te verwijderen met:

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

Aanvullende informatie:

MongoId wordt gebruikt als waarde voor een _id veld als u niet stel zelf een waarde in, bijvoorbeeld met:

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

Als u dit document en var_dump() ophaalt, ziet u:

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

De opmerking in de documenten betekent dat u dat document nu niet kunt verwijderen met:

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

Maar in plaats daarvan moet u het volgende gebruiken:

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

Als laatste punt wil ik naar voren brengen dat je niet echt new MongoInt32(1) hoeft te gebruiken in de eerste plaats kun je gewoon gebruiken:

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

Je hebt MongoInt32/MongoInt64 alleen nodig als je op een 32-bits platform (of Windows) werkt en met grote aantallen te maken hebt.



  1. Redis-benchmarking voor hget- en hset-opdrachten

  2. De nieuwe manier om open source databases te beheren

  3. een veldnaam ClassName wordt door morphia in mongodb ingevoegd

  4. Voeg tekenreekswaarden samen in een array in een enkel veld in MongoDB