Запрос MongoDB со сравнением времени в массиве

#javascript #database #mongodb #datetime #nosql

#javascript #База данных #mongodb #дата и время #nosql

Вопрос:

Я борюсь с тем, как запрашивать в поле массива. Предположим, у меня есть такие данные, как:

 const data = [
  {
    "chapter": 1,
    "targets": [
      {
        type: 'user',
        recipientId: 1
      }
    ],
    "challenge": [
      {
        "challengeId": "ch-1",
        "targetExpired": "2020-10-14T16:25:00.000 00:00"
      },
      {
        "challengeId": "ch-2",
        "targetExpired": "2020-10-14T17:25:00.000 00:00"
      },
      {
        "challengeId": "ch-3",
        "targetExpired": "2020-10-14T18:25:00.000 00:00"
      },
    ]
  },
  {
    "chapter": 1,
    "targets": [
      {
        type: 'user',
        recipientId: 2
      }
    ],
    "challenge": [
      {
        "challengeId": "ch-2",
        "targetExpired": "2020-10-14T16:25:00.000 00:00"
      },
      {
        "challengeId": "ch-3",
        "targetExpired": "2020-10-14T16:25:00.000 00:00"
      },
      {
        "challengeId": "ch-4",
        "targetExpired": "2020-10-14T16:25:00.000 00:00"
      },
    ]
  },
  {
    "chapter": 1,
    "targets": [
      {
        type: 'user',
        recipientId: 4
      }
    ],
    "challenge": [
      {
        "challengeId": "ch-2",
        "targetExpired": "2020-10-14T16:25:00.000 00:00"
      },
      {
        "challengeId": "ch-3",
        "targetExpired": "2020-10-14T16:25:00.000 00:00"
      },
      {
        "challengeId": "ch-4",
        "targetExpired": "2020-10-14T16:25:00.000 00:00"
      },
    ]
  },
],
  

Если входные input = [1,2,4] данные для проверки с recipientId условием запроса:

  1. Если срок действия «some» targetExpired еще не истек (имеется в виду some targetExpired < new Date() ), результат получает все данные в БД.
  2. Если «все» targetExpired истекло, например, за recipientId:2 все время истекло. В результате я должен получить каждую коллекцию, кроме recipientId: 2

Извините, я не видел ни одного API в соответствии с этим условием. Есть идеи? Спасибо.