MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Procurando o valor de qualquer campo no MongoDB sem nomeá-lo explicitamente


para fazer uma pesquisa de texto em todos os campos, primeiro você deve criar um índice de texto em todos os campos.

como a documentação do mongodb indica, "Para permitir a pesquisa de texto em todos os campos com conteúdo de string, use o especificador curinga ($**) para indexar todos os campos que contêm conteúdo de string."

se você estiver trabalhando dentro do shell mongo (que você executa a partir da linha de comando chamando 'mongo'), então você pode fazer isso com este comando, onde 'collection' é o nome da coleção no banco de dados que você deseja usar.

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

o segundo objeto, ou seja, {name:"TextIndex"} , é opcional... na verdade você não precisa dar um nome ao índice, já que só pode haver um único índice de texto por coleção (de cada vez... você pode descartar índices e criar novos se quiser).

depois de criar um índice de texto em todos os campos, você pode fazer uma pesquisa de texto simples com o seguinte objeto de consulta:{ $text : { $search: <your string> } }

então, se você estiver escrevendo uma função javascript, você pode fazer algo como:

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

para obter mais informações sobre as várias maneiras de controlar a pesquisa, consulte a documentação do mongodb sobre pesquisa de texto aqui