sql >> Database >  >> NoSQL >> MongoDB

Zoeken naar de waarde van een veld in MongoDB zonder het expliciet een naam te geven

om een ​​tekstzoekopdracht op alle velden uit te voeren, moet u eerst een tekstindex maken op alle velden.

zoals de mongodb-documentatie aangeeft:"Om tekst zoeken op alle velden met tekenreeksinhoud mogelijk te maken, gebruikt u de wildcard-specificatie ($**) om alle velden te indexeren die tekenreeksinhoud bevatten."

als je in de mongo-shell werkt (die je uitvoert vanaf de opdrachtregel door 'mongo' aan te roepen), dan kun je dit doen met dit commando, waarbij 'collection' de naam is van de collectie in de db die je wilt gebruiken.

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

het tweede object, d.w.z. {name:"TextIndex"} , is optioneel...je hoeft de index eigenlijk geen naam te geven, aangezien er maar één tekstindex per verzameling kan zijn (per keer...je kunt indexen laten vallen en nieuwe maken als je wilt).

als je eenmaal een tekstindex voor alle velden hebt gemaakt, kun je een eenvoudige tekstzoekopdracht uitvoeren met het volgende query-object:{ $text : { $search: <your string> } }

dus als je een javascript-functie schrijft, zou je zoiets kunnen doen:

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

voor meer informatie over de verschillende manieren om het zoeken te beheren, zie de mongodb-documentatie over het zoeken naar tekst hier



  1. Monitoring Percona Server voor MongoDB - Belangrijkste metrische gegevens

  2. Ondersteunt azure zaken als mongodb en redis?

  3. Waarom retourneert hasOwnProperty van het mangoestmodel false als de eigenschap bestaat?

  4. MongoDB Index-builds - Voorkomen dat gebruikers nieuwe builds activeren