Как правильно использовать $ match в Mon goose? - PullRequest
0 голосов
/ 19 июня 2020

Я использую .aggregate и $ match для фильтрации дат, а затем $ sample. Сейчас я получаю пустой массив. Я использую следующий код:

const result = await Event.aggregate([
      {
        $match: { event_added: condition },
      },
      { $sample: { size: 10 } },
    ]);

Когда я использую .find в приведенном ниже коде, он работает отлично, и я получаю все записи, удовлетворяющие условию.

const result = await Event.find({ event_added: condition });

Объект условия выглядит следующим образом:

var condition = { $gt: start, $lt: end };

1 Ответ

1 голос
/ 19 июня 2020

Для операций Model.find() mon goose может определить тип данных на основе вашей схемы и соответствующим образом преобразовать типы в вашем объекте запроса.

Итак, если start и end не Date объектов, mon goose попытается преобразовать значения в Date, как указано в вашей схеме Event.

Объекты агрегации более сложные, и mon goose не может автоматически выполнять преобразование типов . Если ваши значения не являются объектами Date, вам придется сначала преобразовать их, прежде чем передавать их в Model.aggregate()

Как правило, это должно работать

const condition = { $gt: new Date(start), $lt: new Date(end) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...