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

Jak provádět vyhledávání zástupných znaků v MongoDB pomocí Java

Můžete vytvořit regulární výraz zápas na polích v Mongu, takto byste udělali první ze svých vzorů:

Pattern p = Pattern.compile("Mon.*DB", CASE_INSENSITIVE);
BasicDBObject query = new BasicDBObject("name", p);

// finds all records with "name" matching /Mon.*DB/i
DBCursor cursor = collection.find(query);

Buďte však opatrní, mnoho shod regulárních výrazů vyžaduje úplné prohledání tabulky. To znamená, že pokud je spustíte proti velké sbírce, motor bude muset iterovat všechny dokumenty (pravděpodobně narazí na disk) a každý jednotlivě zkontrolovat, zda se shodují. To je mnohem pomalejší než dotazy, které používají indexy.

Jedinými regulárními výrazy, které zasáhnou index, jsou shody s předponou rozlišující malá a velká písmena. Můžete takto vyhledat všechna „Po*“ a použít index:

Pattern p = Pattern.compile("^Mon.*");
BasicDBObject query = new BasicDBObject("name", p);

// finds all records with "name" matching /^Mon.*/
DBCursor cursor = collection.find(query);



  1. Jak vypočítat průměr za den pole pomocí MongoDB?

  2. MongoDB:Dotaz má implicitní limit (256)?

  3. Zkrátit sbírku

  4. Můj kód api načítá prázdné pole dat z mongodb, zatímco kód funguje dobře na hřišti mongodb