MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Datastore-Lösung für die Tag-Suche

Mongodb kann damit umgehen, was Sie wollen, wenn Sie Ihre Objekte so speichern

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

Dann stimmt die folgende Abfrage mit allen Elementen überein, die att1 und attr2 haben

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

aber das passt nicht dazu

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

die Abfrage gibt einen Cursor zurück, wenn Sie möchten, dass dieser Cursor sortiert wird, dann fügen Sie einfach die Sortierparameter wie folgt zur Abfrage hinzu

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

Sehen Sie sich Erweiterte Abfragen an um zu sehen, was möglich ist.

Geeignete Indizes können wie folgt eingerichtet werden

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

Und Sie können Leistungsinformationen mit

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

Mongo erklärt, wie viele Objekte gescannt wurden, wie lange der Vorgang gedauert hat und verschiedene andere Statistiken.