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

Как да премахнете _id в MongoDB и да замените с друго поле като първичен ключ?

В mongodb всеки документ трябва да е уникален, така че ви е необходимо уникално поле, което да се използва като id. Ако не предоставите такъв, mongodb ще ви го предостави автоматично. Въпреки това, ако искате да дадете персонализирани идентификатори по каквато и да е причина (подобряване на производителността на заявката е една от тях), можете да го направите ръчно. Ето моите предложения:

Ако вмъквате нов документ, можете ръчно да зададете полето _id като:

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

Но когато вече имате документ в базата данни, вече не можете да го променяте. Това, което можете да направите, е да направите копие на документа, да запишете нов документ със същите данни и да изтриете стария:

// 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})
}

Този въпрос е подобен на следния:

Как да актуализирате _id на един MongoDB документ?

Надявам се, че отговорът ми е бил полезен



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Не може да се свърже с Mongo Atlas чрез VPC peering от GCP клъстер

  2. не може да прави заявки през ListField(EmbeddedDocumentField)

  3. Заявката връща грешен резултат с помощта на драйвер mongdb erlang?

  4. Намерете точно съвпадащ масив или имащ цялата стойност на масива в MongoDb

  5. Как да получа _id на наскоро вмъкнатия документ след вмъкване с помощта на mongo csharp?