sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan laver jeg forespørgsler uden store og små bogstaver på Mongodb?

Chris Fulstows løsning vil virke (+1), men den er muligvis ikke effektiv, især hvis din samling er meget stor. Ikke-rodfæstede regulære udtryk (dem der ikke begynder med ^ , som forankrer det regulære udtryk til starten af ​​strengen), og dem der bruger i flag for store og små bogstaver vil ikke bruge indekser, selvom de findes.

En alternativ mulighed, du kunne overveje, er at denormalisere dine data for at gemme en version med små bogstaver af name felt, for eksempel som name_lower . Du kan derefter forespørge på det effektivt (især hvis det er indekseret) for eksakte match, der ikke er følsomme over for store og små bogstaver, f.eks.:

db.collection.find({"name_lower": thename.toLowerCase()})

Eller med et præfiksmatch (et rodfæstet regulært udtryk) som:

db.collection.find( {"name_lower":
    { $regex: new RegExp("^" + thename.toLowerCase(), "i") } }
);

Begge disse forespørgsler vil bruge et indeks på name_lower .



  1. Får indstillingen slave-read-only nej til at få slave til at bekræfte hvert hash-opslag med masteren?

  2. Hvorfor er Redis SET ydeevne bedre end GET?

  3. Arbejder du med indlejrede objekter i Redis?

  4. gradle bygge lokale værker. I docker-container gør det ikke. HVORFOR?