mongo-db-Abfragen-array-Werte mit mehr und weniger als
Habe ich ein schema ähnlich
{
'user_id' : 1,
'marks' : [10, 40]
}
Möchte ich die Anzahl der Benutzer, die gepunktet haben Marken zwischen 20 und 30 mindestens einmal.
Ich habe versucht, die folgende Abfrage
db.users.count({
'marks' : {$gte: '20', $lt: '30'}
})
Aber dazu gehören auch diejenigen, die mit Marken mehr als 30 ...
- Genaue duplizieren mit stackoverflow.com/questions/6038818/...
- danke, ich sah für ähnliche Fragen, aber konnte Sie nicht finden...
- tatsächlich in Ihrer Abfrage, die Sie mit strings statt zahlen als gut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also davon aus, dass Sie die folgenden Daten in die Sammlung erzielt:
Dann würden Sie erwarten, zu filtern user_ids 3 und 4, die eine Anzahl von 2.
Der einfachste Weg, um Ihre Abfrage ausgeführt wird, zu tun:
Aber nicht schön...
Verwenden
$elemMatch
zu beschränken, die beide Teile der Reihe-Abfrage, um die gleichenmarks
element:Ist es nicht einfach dies:
Die in Ihrem Fall wäre zu übersetzen:
Weitere Informationen finden Sie https://docs.mongodb.com/manual/reference/operator/query/elemMatch/