MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Recherche de la valeur de n'importe quel champ dans MongoDB sans le nommer explicitement

pour effectuer une recherche de texte sur tous les champs, vous devez d'abord créer un index de texte sur tous les champs.

comme l'indique la documentation de mongodb, "Pour autoriser la recherche de texte sur tous les champs avec un contenu de chaîne, utilisez le spécificateur générique ($**) pour indexer tous les champs qui contiennent du contenu de chaîne."

si vous travaillez à l'intérieur du shell mongo (que vous exécutez à partir de la ligne de commande en appelant 'mongo'), vous pouvez le faire avec cette commande, où 'collection' est le nom de la collection dans la base de données que vous souhaitez utiliser.

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

le deuxième objet, c'est-à-dire {name:"TextIndex"} , est facultatif... vous n'avez pas besoin de donner un nom à l'index, car il ne peut y avoir qu'un seul index de texte par collection (à la fois... vous pouvez supprimer des index et en créer de nouveaux si vous le souhaitez).

une fois que vous avez créé un index de texte sur tous les champs, vous pouvez effectuer une simple recherche de texte avec l'objet de requête suivant :{ $text : { $search: <your string> } }

donc, si vous écrivez une fonction javascript, vous pourriez faire quelque chose comme :

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

pour plus d'informations sur les différentes manières de contrôler la recherche, consultez la documentation de mongodb sur la recherche de texte ici