Получить документы от указанного c месяца и указанного c года в MongoDB - PullRequest
1 голос
/ 14 марта 2020

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

db.collection(expenses_collection).find({
  $expr: { $eq: [{ $month: "$date" }, 3], $eq: [{ $year: "$date" }, 2020] }
});

Но этот запрос возвращает мне все документы, которые были созданы в 2020 году, и игнорирует месяц. Как я могу решить эту проблему?

Заранее спасибо!

1 Ответ

2 голосов
/ 14 марта 2020

Вы должны использовать операторы $ и для привязки двух условий, в противном случае это будет учитывать последнее условие в запросе. Поэтому попробуйте ниже одного:

db.collection.find({
  $expr: {
    $and: [
      {
        "$eq": [
          {
            "$month": "$date"
          },
          3
        ]
      },
      {
        "$eq": [
          {
            "$year": "$date"
          },
          2020
        ]
      }
    ]
  }
})

Тест: MongoDB-Playground

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...