Ich verwende PHP/Mongo, um einen Datensatz wie den folgenden abzufragen:
{
description:
{
0:
{level: (some int 0-50)},
1:
{level: (some int 0-50)},
...
n:
{level: (some int 0-50)}
}
}
Wie schreibe ich die Funktion, in php, die eine dynamische Abfrage, die für eine Ebene 40 und höher sucht, mit $oder und basierend auf der Anzahl der Beschreibung Tasten (0 ... n) bauen wird?
Was ich derzeit für eine manuelle Abfrage habe, funktioniert nicht (ich habe das Gefühl, dass es daran liegt, dass in einigen Einträgen description.1, 2, 3 nicht existieren):
find("$or":{"description.0.level":[40,41,42,43,44,45,46,47,48,49,50],"description.1.level":[40,41,42,43,44,45,46,47,48,49,50],"description.2.level":[40,41,42,43,44,45,46,47,48,49,50],"description.3.level":[40,41,42,43,44,45,46,47,48,49,50]}})
Ich erhalte eine Fehlermeldung:
Fataler Fehler: Ungefangene Ausnahme 'MongoCursorException' mit der Meldung '$and/$or/$nor must be a nonempty array'
Ich brauche also eine Funktion, die die Abfrage dynamisch erstellt und funktioniert :).