Сортировать перед группой по Pymongo - PullRequest
0 голосов
/ 24 февраля 2020

Что я хочу сделать, так это отсортировать по другим полям, не существующим в группе, по операции. В SQL я бы применил функцию Window, но я не знаю, как это сделать здесь.

Мой код следующий:

    pipeline = [
    {
        "$match": {
            "contract": contract,
            "frequency": frequency,
            "date": {"$gte": date_start, "$lte": date_final},
            "type": type,
            "subtype": subtype
        }
    },
    {
        "$unwind": {"path": "$v", "includeArrayIndex": "arrayIndex"}
    },
    {
        "$group": {
            "_id": {
                "arrayIndex": "$arrayIndex",
                "contract": "$contract",
                "frequency": "$frequency",
                "source": "$source",
                "type": "$type",
                "subtype": "$subtype",
                "date": "$date"
            },
            "values": {"$sum": "$v.value"}
        }
    },
    {
        "$sort": {"_id.arrayIndex": 1}
    },
    {
        "$group": {
            "_id": {
                "contract": "$_id.contract",
                "frequency": "$_id.frequency",
                "type": "$_id.type",
                "source": "$_id.source",
                "subtype": "$_id.subtype",
                "date": "$_id.date"
            },
            "values": {"$push": "$values"}
        }
    },
    {
        "$project": {"_id": 0, "cups": "$_id.cups", "date": "$_id.date", "v": "$values"}
    }
]

Я бы хотел сгруппировать по эти поля и сортировать по arrayIndex, так что мои окончательные значения массива находятся в соответствующей позиции.

Большое спасибо.

...