mongoengine - 查询EmbeddedDocumentField的ListField

时间:2017-06-27 20:45:25

标签: python django mongodb model mongoengine

我使用mongoengine与Django和python。

这是我的代码:

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 - 我想要一个查询来过滤所有酒店至少 Chambre ,其中prix> = a(浮动数字)

2 - 也有 Chambre

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用embedded notatio n以及Query Operator来表示“大于或等于”

Hotel.objects(chambre__prix__gte=a)

或者如果您需要转换为整数:

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

如果您只想投影“匹配”元素,请直接在驱动程序上使用原始查询:

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