2016-09-15 2 views
0

Ich versuche, alle submissions Dokumente zu erhalten, die alle tags in einem Array aufgeführt enthalten.

Meine aktuellen Code sieht wie folgt aus:

submissions.find({ tags: { $all => tags } }) 
print tags.count 

Doch bei Laufen, ich folgende Fehlermeldung in der zweiten Zeile angezeigt:

BSON::InvalidKey at/
NilClass instances are not allowed as keys in a BSON document. 

Es sollte auch beachtet werden, dass die folgende tut Arbeit, wie es soll (obwohl es nicht mein gewünschtes Ergebnis nicht erreicht):

submissions.find({ tags: tags }) 
print tags.count 

Wie kann ich meinen Originalcode korrigieren, um die gewünschten Dokumente richtig zu finden?

Antwort

1

Der alle Ausdruck $ in MongoDB ist:

submissions.find({ tags: { $all: tags }}); 

In diesem Fall "Tags" muss ein Array sein (tags = ['tag1','tag2','tag3'])

Warum verwendet man "$ all => -Tags" statt " $ all: Tags "?

+0

Ich versuchte das zuerst, aber es gab mir einen Syntaxfehler, also änderte ich es. Nachdem Sie darauf hingewiesen haben, erkannte ich, dass das "$ all" eine Zeichenfolge in Ruby sein sollte, die die Ursache des Fehlers war. Vielen Dank! –

Verwandte Themen