mongoengine - Query on ListField of EmbeddedDocumentField

安稳与你 提交于 2019-12-17 21:14:52

问题


I use mongoengine with Django and python.

This is my 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 - I want a query to filter all Hotel that have at least a Chambre with prix >= a (a floeat number)

2 - also have that Chambre

Any idea?


回答1:


You can use the embedded notation as well as the Query Operator for "greater than or equal "

Hotel.objects(chambre__prix__gte=a)

Or if you need to cast as an integer:

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

If you want to only project the "matched" element, use a raw query directly on the driver instead:

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


来源:https://stackoverflow.com/questions/44789523/mongoengine-query-on-listfield-of-embeddeddocumentfield

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!