MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak usunąć dokument, do którego odwołuje się identyfikator w mongoDB z php?

Użyłeś normalnej liczby całkowitej (MongoInt32) jako _id pole. A MongoInt32 to nie to samo co MongoID. Są to dwie różne klasy. Powinieneś go usunąć za pomocą:

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

Informacje dodatkowe:

MongoId jest używany jako wartość dla _id pole, jeśli nie ustaw wartość samodzielnie, na przykład za pomocą:

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

Jeśli pobierzesz ten dokument i var_dump(), które zobaczysz:

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

Uwaga w dokumentach oznacza, że ​​nie możesz teraz usunąć tego dokumentu za pomocą:

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

Ale zamiast tego będziesz musiał użyć:

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

Na koniec chciałbym wspomnieć, że tak naprawdę nie musisz używać new MongoInt32(1) po pierwsze, możesz po prostu użyć:

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

Potrzebujesz MongoInt32/MongoInt64 tylko w przypadku, gdy korzystasz z platformy 32-bitowej (lub Windows) i musisz radzić sobie z dużymi liczbami.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Uwierzytelnianie aplikacji NodeJS i MongoDB przez JWT

  2. Interfejs Mongo

  3. Zapytanie o pole haszujące Mongoid

  4. MongoDB Tutorial:Łączenie się z MongoDB w Scala

  5. Jak uzyskać wywołanie zwrotne w MongoDB collection.find()