sql >> Databáze >  >> NoSQL >> MongoDB

Jak odstranit _id v MongoDB a nahradit jiným polem jako primární klíč?

V mongodb musí být každý dokument jedinečný, takže jako id potřebujete jedinečné pole. Pokud žádný nezadáte, mongodb vám ho automaticky poskytne. Pokud však chcete poskytnout vlastní ID z jakéhokoli důvodu (jedním z nich je zlepšit výkon dotazů), můžete to udělat ručně. Zde jsou mé návrhy:

Pokud vkládáte nový dokument, můžete ručně nastavit pole _id jako:

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

Ale když již máte dokument v databázi, nemůžete jej dále upravovat. Co můžete udělat, je vytvořit kopii dokumentu, uložit nový dokument se stejnými daty a vymazat ten starý:

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

Tato otázka je podobná následující:

Jak aktualizovat _id jednoho dokumentu MongoDB?

Doufám, že moje odpověď byla užitečná



  1. mongodb c# vyberte konkrétní pole tečkovou notaci

  2. Jak provádět textové vyhledávání v mgo?

  3. Vytvoření služby DB v aplikaci MVC Express

  4. Seřaďte pole v dokumentu pomocí MongoDB