Фильтр встроенных документов, соответствующих условию в MongoEngine, Django, GraphQl

Структура документа

Data

class Data(EmbeddedDocument):
    v = FloatField()
    q = StringField()
    co2 = FloatField()
    price = FloatField()
    ts = DateTimeField()

Данные счетчиков

class MetersData(DynamicDocument):
    meta = {'collection': 'dk_heating'}
    _id = ObjectIdField()
    ident = StringField()
    meteringPointId = StringField()
    customer = StringField()
    cvr = StringField()
    type = StringField()
    unit = StringField()
    address = StringField()
    period = EmbeddedDocumentField(Period)
    hourly_data = ListField(EmbeddedDocumentField(Data), db_field='data')
    daily_data = ListField(EmbeddedDocumentField(Data))
    monthly_data = ListField(EmbeddedDocumentField(Data))
    # monthly_data = EmbeddedDocumentListField(Data)
    yearly_data = ListField(EmbeddedDocumentField(Data))

Я использую этот запрос.

Query

MetersData.objects.filter(address=address, customer=customer).fields(
                monthly_data={"$elemMatch": {"q": "E"}},
                address=1, customer=1, cvr=1, ident=1, meteringPointId=1, type=1, unit=1, period=1)

Возвращает мне только первый совпадающий элемент. Я прочитал документацию, и там говорится, что $elemMatch должен возвращать только первый совпадающий результат. Но в моем случае мне нужны все совпадающие результаты.

Результат запроса

Query Result

Я искал везде, но не могу найти решение.

Я исправил проблему с помощью хака. Более подробно здесь

Вернуться на верх