sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur tar man bort ett dokument som refereras av ett id i mongoDB från php?

Du har använt ett normalt heltal (MongoInt32) som _id fält. Och MongoInt32 är inte samma sak som MongoID. De är två olika klasser. Du ska ta bort det med:

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

Ytterligare information:

MongoId används som värde för ett _id om du inte gör det ställ in ett värde själv, till exempel med:

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

Om du hämtar detta dokument och var_dump() kommer du att se:

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

Anteckningen i dokumenten betyder att du inte kan ta bort det dokumentet nu med:

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

Men istället måste du använda:

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

Som sista punkt vill jag ta upp att du egentligen inte behöver använda new MongoInt32(1) i första hand kan du bara använda:

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

Du behöver bara MongoInt32/MongoInt64 om du är på en 32-bitarsplattform (eller Windows) och behöver hantera stora antal.



  1. Har MongoDB stöd för flyttalstyper?

  2. Hur man berättar för en klient var den nya Redis-mastern använder Sentinel

  3. C# MongoDB Distinct frågesyntax

  4. MongoDB på Azure:Hur man väljer rätt instanstyp?