Bonjour,

Voici une requête mongodb qui fonctionne très bien et qui retourne des documents :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
Restaurants qui ont des scores de grade C ET des scores strictement inférieurs à 30 :
 
 
db.getCollection('restaurants').find({
'grades': {
    $elemMatch: {
        'grade': 'C',
        'score': {
            $lt:30
        }
    }
    }
},
{'grades.grade': 1, "grades.score": 1}
)
Je souhaite l'utiliser avec pymongo mais je ne trouve pas d'équivalent de $elemMatch en pymongo :

Voici le test :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13

req = collect.find({
    '$elemMatch': {
        'grades.grade': 'C',
        'grades.score': {'$lt':30}
    }},
    {'grades.grade': 1, "grades.score": 1}
).limit(1)

for r in req:
    pprint.pprint(r)
    pass

Le message d'erreur suivant est retourné : pymongo.errors.OperationFailure: unknown top level operator: $elemMatch, full error.

Donc, problème.

Comment donc faire cette requête ?

Merci d'avance.

A+