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

Hledání hodnoty libovolného pole v MongoDB bez jeho explicitního pojmenování

Chcete-li provést textové vyhledávání ve všech polích, musíte nejprve vytvořit textový index ve všech polích.

jak uvádí dokumentace mongodb:"Chcete-li umožnit textové vyhledávání ve všech polích s obsahem řetězce, použijte specifikátor zástupných znaků ($**) k indexování všech polí obsahujících řetězec."

pokud pracujete uvnitř mongo shellu (který spouštíte z příkazového řádku voláním 'mongo'), pak to můžete udělat pomocí tohoto příkazu, kde 'collection' je název kolekce v db, kterou chcete použít.

db.collection.createIndex({ "$**": "text" },{ name: "TextIndex" })

druhý objekt, tj. {name:"TextIndex"} , je volitelný...ve skutečnosti nemusíte indexu pojmenovávat, protože na kolekci může být pouze jeden textový index (najednou...můžete indexy vypustit a vytvořit nové, pokud chcete).

jakmile vytvoříte textový index ve všech polích, můžete provést jednoduché textové vyhledávání pomocí následujícího objektu dotazu:{ $text : { $search: <your string> } }

takže pokud píšete javascriptovou funkci, můžete udělat něco jako:

var cursor = db.collection(<collection_name>).find({ $text: { $search: <your string> } });

Další informace o různých způsobech ovládání vyhledávání naleznete v dokumentaci mongodb o textovém vyhledávání zde



  1. Jak uložit a ukončit redis.conf?

  2. Redis Vs RabbitMQ jako zprostředkovatel dat/systém zasílání zpráv mezi Logstash a elasticsearch

  3. ScaleGrid oznamuje sdílený hosting MongoDB na Amazon AWS

  4. Použijte více než jedno schéma na kolekci na mongodb