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

Jak odstranit duplikáty na základě klíče v Mongodb?

Tato odpověď je zastaralá : dropDups možnost byla v MongoDB 3.0 odstraněna, takže ve většině případů bude vyžadován jiný přístup. Můžete například použít agregaci, jak je navrženo v:MongoDB duplicitní dokumenty i po přidání jedinečného klíče.

Pokud jste si jisti, že source_references.key identifikuje duplicitní záznamy, můžete zajistit jedinečný index pomocí dropDups:true možnost vytvoření indexu v MongoDB 2.6 nebo starším:

db.things.ensureIndex({'source_references.key' : 1}, {unique : true, dropDups : true})

Tím zůstane první jedinečný dokument pro každý source_references.key hodnotu a zahoďte všechny následné dokumenty, které by jinak způsobily narušení duplicitního klíče.

Důležitá poznámka :Všechny dokumenty postrádající source_references.key pole bude považováno za pole null hodnotu, takže následující dokumenty, kterým chybí pole klíče, budou vymazány. Můžete přidat sparse:true možnost vytvoření indexu, takže index se použije pouze na dokumenty s source_references.key pole.

Samozřejmá opatrnost :Udělejte si zálohu databáze a zkuste to nejprve ve zkušebním prostředí, pokud máte obavy z nechtěné ztráty dat.



  1. Porovnání 64bitového čísla se znaménkem pomocí 32bitových bitových operací v Lua

  2. Redis, bude téma (pub/sub) vždy doručeno alespoň jednomu předplatiteli?

  3. Správa dlouhotrvajících operací v MongoDB

  4. Aktualizace Service Stack Redis List