Recherche facettée avec MongoDB

La recherche facettée avec MongoDB  évolue avec la sortie de la version 3.4. Concrètement, cette recherche (faceted search) permet aux utilisateurs de filtrer une collection de données selon un ou plusieurs critères (les facettes). C’est exactement ce qui vous permet de trouver Batman parmi les super-héros en fonction de son univers (DC), sa ville (Gotham) et son symbole (chauve-souris).

Méthode 1 : La Brute

Le document contient des données en double car il faut dupliquer les données des facettes. Chaque document devient donc plus lourd. De plus, l’index est plus lourd qu’avec les autres méthodes.

Méthode 2 : Le Truand

Le document reste simple et devient même plus concis. Il faut créer un index par facette, pourtant le poids des index est inférieur à celui de l’index de la méthode 1. Par contre il est nécessaire de faire une aggrégation par facette.

réécrire en explosant les facettes et tester. ?

Méthode 3 : Le Bon

Parmi les nouveautés de la version 3.4 de MongoDB, vous trouverez $facet et $bucket qui facilite la gestion des facettes. Le document n’est pas modifié pour les facettes. Aucun index spécifique n’est requis pour fonctionner.

Astuce

Pour connaitre les versions de MongoDB, voici deux commandes à exécuter dans le shell mongo :
version() : connaitre la version du client MongoDB
db.version() : connaitre la version de MongoDB

Références

Faceted Search with MongoDB

$facet dans la documentation MongoDB

$bucket dans la documentation MongoDB

Related Post

Schéma de validation MongoDB Quand on utilise MongoDB, les collections peuvent facilement contenir des types de données différents pour le même champ. Comment assurer qu’un champ ...
Débuter avec NodeJS, Express et MongoDB Un collègue m’a parlé de différents projets personnels orientés web et de son dilemne sur le choix des techologies. Curieux j’ai voulu essayer NodeJS,...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *