2017-06-27 16 views
1

私はDengoとPythonでmongoengineを使用しています。 mongoengine - EmbeddedDocumentFieldのListFieldに照会してください

この

は私のコードです:

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 - 私は、クエリが持っているすべてホテルをフィルタリングする少なくともシャンブルグランプリと> =(floeat数)

2 - それもありますシャンブレ

ご存じですか?

あなたが

Hotel.objects(chambre__prix__gte=a) 

それとも、整数としてキャストする必要がある場合は、「以上」のembedded notatioのnと同様にQuery Operatorを使用することができます

答えて

0

:あなたがしたい場合は

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

「一致」要素のみを投影し、直接代わりに生のクエリを使用してください:

Hotel._get_collection().find(
    { 'chambre.prix': { '$gte': int(math.floor(a)) } }, 
    { 'chambre.$': 1 } 
) 
+0

この燭台も? –

+0

@abinaxあなたが何を意味するのか分かりません。条件に一致する配列のエントリだけを返すことを意味しますか? –

+0

ええ、すべての** Hotel.chambre **には賞品があります>唯一の –

関連する問題