2017-06-27 1 views
1

Ich benutze Mongoengine mit Django und Python.mongoengine - Abfrage auf ListField von EmbeddedDocumentField

Dies ist mein Code:

class Chambre(EmbeddedDocument): 
    max_personne = IntField(default=0) 
    prix = IntField(default=0) 

class Hotel(Document): 
    code = IntField(default=0) 
    nom = StringField(max_length=200) 
    chambre = ListField(EmbeddedDocumentField(Chambre)) 
    resume = StringField(max_length=200) 

1 - Ich möchte eine Abfrage alle Hotels filtern, die ein Chambre mit prix zumindest> = a (a floeat Nummer)

2 - haben auch das Chambre

Irgendeine Idee?

Antwort

0

können Sie verwenden die embedded notatio n sowie die Query Operator für „größer oder gleich“

Hotel.objects(chambre__prix__gte=a) 

oder wenn Sie als eine ganze Zahl werfen:

Hotel.objects(chambre__prix__gte=int(math.floor(a))) 

Wenn Sie möchten, Projizieren Sie nur das "matched" -Element, verwenden Sie stattdessen eine rohe Abfrage direkt auf dem Treiber:

+0

und wie zu haben diese chambre auch? –

+0

@abinax Keine Ahnung was du meinst. Meinst du nur den Eintrag des Arrays, das der Bedingung entspricht? –

+0

yeah, in jedem ** Hotel.chambre ** gibt es chambre, die haben prix> a nur –

Verwandte Themen