MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да премахнете документ, посочен от идентификатор в mongoDB от php?

Използвали сте нормално цяло число (MongoInt32) като _id поле. И MongoInt32 не е същото като MongoID. Те са два различни класа. Трябва да го изтриете с:

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

Допълнителна информация:

MongoId се използва като стойност за _id поле, ако не задайте стойност сами, като например с:

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

Ако извлечете този документ и var_dump(), които ще видите:

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

Бележката в документите означава, че не можете да премахнете този документ сега с:

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

Но вместо това ще трябва да използвате:

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

Като последна точка бих искал да повдигна, че всъщност не е нужно да използвате new MongoInt32(1) на първо място, можете просто да използвате:

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

MongoInt32/MongoInt64 ви трябва само в случай, че сте на 32-битова платформа (или Windows) и трябва да се справите с големи числа.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Множество популации - mongoosejs

  2. Документация на ClusterControl 1.5 – Какво е новото

  3. Mongoose.js:Намерете потребител по потребителско име LIKE value

  4. Съхранение на файлове в MongoDB с GridFS

  5. Да спре ли mongodb да игнорира специални символи?