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

Jak usunąć _id w MongoDB i zastąpić innym polem jako kluczem podstawowym?

W mongodb każdy dokument musi być unikalny, więc potrzebujesz unikalnego pola, które będzie używane jako identyfikator. Jeśli go nie podasz, mongodb dostarczy go automatycznie. Jeśli jednak chcesz nadać niestandardowe identyfikatory z dowolnego powodu (poprawa wydajności zapytań jest jednym z nich), możesz to zrobić ręcznie. Oto moje sugestie:

Jeśli wstawiasz nowy dokument, możesz ręcznie ustawić pole _id, takie jak:

doc._id = "12312312" //(Or whichever function to generate id you have)
doc.save(...)

Ale kiedy masz już dokument w bazie danych, nie możesz go już modyfikować. Możesz zrobić kopię dokumentu, zapisać nowy dokument z tymi samymi danymi i usunąć stary:

// Fetch the documents
docs = db.clients.find({})

docs.forEach((doc) => {
   //For each field you copy the values
   new_doc.field = doc.field
   new_doc._id = //YOUR ID FUNCTION 

   // insert the document, using the new _id
   db.clients.insert(new_doc)

   // remove the document with the old _id
   db.clients.remove({_id: doc._id})
}

To pytanie jest podobne do następującego:

Jak zaktualizować _id jednego dokumentu MongoDB?

Mam nadzieję, że moja odpowiedź była pomocna



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Strumienie Mongo Change uruchamiane wiele razy (tak jakby):aplikacja Node działająca w wielu instancjach

  2. Uwagi dotyczące administrowania MongoDB

  3. rzadkie indeksy i wartości null w mongo

  4. Powstrzymać mongodb przed ignorowaniem znaków specjalnych?

  5. Mongorestore w pliku Dockerfile