sql >> Base de Datos >  >> NoSQL >> MongoDB

Buscar el valor de cualquier campo en MongoDB sin nombrarlo explícitamente

para realizar una búsqueda de texto en todos los campos, primero debe crear un índice de texto en todos los campos.

como indica la documentación de mongodb, "Para permitir la búsqueda de texto en todos los campos con contenido de cadena, use el especificador comodín ($**) para indexar todos los campos que contienen contenido de cadena".

si está trabajando dentro del shell mongo (que ejecuta desde la línea de comando llamando a 'mongo'), puede hacerlo con este comando, donde 'colección' es el nombre de la colección en la base de datos que desea usar.

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

el segundo objeto, es decir, {name:"TextIndex"} , es opcional... en realidad no es necesario que le dé un nombre al índice, ya que solo puede haber un único índice de texto por colección (a la vez... puede eliminar índices y crear otros nuevos si lo desea).

una vez que haya creado un índice de texto en todos los campos, puede realizar una búsqueda de texto simple con el siguiente objeto de consulta:{ $text : { $search: <your string> } }

entonces, si está escribiendo una función javascript, podría hacer algo como:

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

para obtener más información sobre las diversas formas de controlar la búsqueda, consulte la documentación de mongodb sobre búsqueda de texto aquí