Ошибка сегментации при добавлении узлов в связанный список

Если вы хотите «весить» результаты по определенным критериям или иметь какое-либо «вычисленное значение» в «сортировке», тогда вам понадобится метод .aggregate() . Это позволяет использовать «прогнозируемые» значения в операции $sort , для которой может использоваться только настоящее поле в документе:

db.messages.aggregate([
    { "$match": { "messages": userId } },
    { "$project": {
        "recipients": 1,
        "unread": 1,
        "content": 1,
        "readYet": {
            "$setIsSubset": [ [userId], "$unread" ] }
        }
    }},
    { "$sort": { "readYet": -1 } },
    { "$limit": 20 }
])

Здесь $setIsSubset позволяет сопоставить «непрочитанный» массив с преобразованным массивом [userId], чтобы увидеть, имеются ли какие-либо совпадения. Результат будет либо true, где существует userId, либо false, где это не так.

Затем это можно передать в $sort, который заказывает результаты с предпочтениями совпадений (сортировка сортировки является true сверху), и, наконец, $limit просто возвращает результаты до указанной суммы.

Итак, чтобы использовать заданный термин для «сортировки», значение должно быть «проецировано» в документ, чтобы его можно было отсортировать. Структура агрегации - это то, как вы это делаете.

Также обратите внимание, что $elemMatch не требуется только для того, чтобы соответствовать одному значению в массиве, и вам нужно только указать значение напрямую. Это цель, где «несколько» условий должны выполняться на одном элементе массива, что, конечно, здесь не применяется.

-1
задан user4581301 15 January 2019 в 23:34
поделиться

1 ответ

Node* newNode;

Вы по умолчанию инициализировали указатель. Значение будет неопределенным. Поведение чтения неопределенного значения не определено.

newNode->value = valueInput;

Вы непрямой через неопределенный указатель. Поведение программы не определено.

0
ответ дан eerorika 15 January 2019 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: