sql >> Database >  >> NoSQL >> MongoDB

MongoDB:Update/Upsert vs Invoegen

Als u een document invoegt, moet MongoDB controleren of het document met dezelfde ObjectId bestaat of niet. Als het bestaat, kan het document niet worden ingevoegd.

Hetzelfde geval geldt voor Update. Het moet controleren of het document bestaat of niet. Anders kan de update niet worden uitgevoerd. Het geval waarin uw update-query vertraagt, is wanneer het geen document kan vinden op basis van uw ObjectId / geïndexeerde veld.

Anders zouden de prestaties voor het invoegen/bijwerken van documenten hetzelfde moeten zijn.

Dus invoegen kan zo zijn //(Snel)

  1. (Controleren op document -> Niet gevonden -> Nieuw document invoegen) Anders
  2. (Controleer op document -> Gevonden -> Kan niet worden ingevoegd)

En update met upsert (ObjectId beschikbaar) //(Snel)

  1. (Controleren op document -> Niet gevonden -> Nieuw document invoegen) Anders
  2. (Controleer op document -> Gevonden -> Document bijwerken)

Of Update met upsert (zonder ObjectId) //Dit is traag

  1. (Zoek ObjectIds (langzaam) -> Niet gevonden -> Voeg nieuw document in) Anders
  2. (Zoek ObjectIds (langzaam)-> Gevonden -> Werk de documenten bij)


  1. Aanbevelingen over structuur voor Mongoid/MongoDB Tree of Tags

  2. Hoe test je een methode die verbinding maakt met mongo, zonder daadwerkelijk verbinding te maken met mongo?

  3. Hoe Redis-verbindingen configureren met Rails 4, Puma en Sidekiq?

  4. Waarom krijg ik deze verouderde waarschuwing?! MongoDB