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

Jak provedu dotazy na Mongodb bez ohledu na velikost písmen?

Řešení Chrise Fulstow bude fungovat (+1), ale nemusí být efektivní, zvláště pokud je vaše sbírka velmi velká. Nekořenové regulární výrazy (ty, které nezačínají ^ , který ukotvuje regulární výraz na začátek řetězce) a ty, které používají i příznak pro nerozlišování velkých a malých písmen nebude používat indexy, i když existují.

Alternativní možností, kterou byste mohli zvážit, je denormalizovat svá data tak, aby byla uložena malá verze názvu name pole, například jako name_lower . Poté se můžete efektivně dotazovat (zejména pokud je indexováno) na přesné shody bez rozlišení velkých a malých písmen jako:

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

Nebo se shodou předpony (kořenový regulární výraz) jako:

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

Oba tyto dotazy budou používat index na name_lower .



  1. Vyloučit konkrétní pole v indexu zástupných znaků v MongoDB

  2. Mongodb Mongoimport je příliš velký:Chyba při analýze chyb

  3. Vrátí výsledek jako pole pouze hodnot

  4. Výukový program Hadoop MapReduce pro začátečníky