MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Soluzione datastore per la ricerca di tag

Mongodb può gestire ciò che vuoi, se hai archiviato i tuoi oggetti in questo modo

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

Quindi la query seguente corrisponderà a tutti gli elementi che hanno att1 e attr2

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

ma questo non corrisponderà

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

la query restituisce un cursore, se vuoi che questo cursore sia ordinato, aggiungi semplicemente i parametri di ordinamento alla query in questo modo

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

Dai un'occhiata a Query avanzate per vedere cosa è possibile.

Gli indici appropriati possono essere impostati come segue

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

E puoi ottenere informazioni sulle prestazioni utilizzando

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

Mongo spiega quanti oggetti sono stati scansionati, quanto tempo è durata l'operazione e varie altre statistiche.