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

Solution de banque de données pour la recherche de balises

Mongodb peut gérer ce que vous voulez, si vous avez stocké vos objets comme ça

{ score:2131, attributes: ["attr1", "attr2", "attr3"], ... }

Ensuite, la requête suivante correspondra à tous les éléments qui ont att1 et attr2

c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] } })

mais cela ne correspondra pas

c = db.mycol.find({ attributes: { $all: [ "attr1", "attr4" ] } })

la requête renvoie un curseur, si vous voulez que ce curseur soit trié, ajoutez simplement les paramètres de tri à la requête comme ceci

c = db.mycol.find({ attributes: { $all: [ "attr1", "attr2" ] }}).sort({score:1})

Jetez un œil à Requêtes avancées pour voir ce qui est possible.

Les index appropriés peuvent être configurés comme suit

db.mycol.ensureIndex({attributes:1, score:1})

Et vous pouvez obtenir des informations sur les performances en utilisant

db.mycol.find({ attributes: { $all: [ "attr1" ] }}).explain()

Mongo explique combien d'objets ont été scannés, combien de temps l'opération a duré et diverses autres statistiques.