невозможно преобразовать тип BSON, отсутствующий в дату - PullRequest
1 голос
/ 13 марта 2019

У меня есть агрегация mongoDB, которая отлично работала, когда я попробовал ее на MongoDB 4.0, но теперь мне нужно использовать ее на MongoDB 3.4, и она не работает, я не могу найти почему. Все, что я предполагаю, это то, что ошибка возникает на этапе $ project.

Вот запрос агрегации:

{
  "aggregate": true,
  "pipeline": [
    {
      "$match": {
        "field": {
          "$exists": true
        },
        "field.objects": {
          "$exists": true,
          "$ne": []
        },
        "created_at": {
          "$gte": {
            "sec": 1551398400,
            "usec": 0
          },
          "$lte": {
            "sec": 1554076799,
            "usec": 0
          }
        }
      }
    },
    {
      "$unwind": "$field.objects"
    },
    {
      "$lookup": {
        "from": "Object",
        "localField": "field.objects.id",
        "foreignField": "_id",
        "as": "objects"
      }
    },
    {
      "$match": { // Some match clauses here
    }
    },
    {
      "$group": {
        "_id": "$_id"
      }
    },
    {
      "$project": {
        "year": {
          "$year": "$created_at"
        },
        "month": {
          "$month": "$created_at"
        }
      }
    },
    {
      "$group": {
        "_id": {
          "date": {
            "$concat": [
              {
                "$substr": [
                  "$year",
                  0,
                  4
                ]
              },
              "-",
              {
                "$cond": [
                  {
                    "$lte": [
                      "$month",
                      9
                    ]
                  },
                  {
                    "$concat": [
                      "0",
                      {
                        "$substr": [
                          "$month",
                          0,
                          2
                        ]
                      }
                    ]
                  },
                  {
                    "$substr": [
                      "$month",
                      0,
                      2
                    ]
                  }
                ]
              },
              "-01"
            ]
          }
        },
        "total": {
          "$sum": 1
        }
      }
    }
  ],
  "options": {
    "cursor": true
  },
  "db": "db",
  "collection": "Collection"
}

Итак, с MongoDB 4.0 я получаю правильный результат, но MongoDB 3.4 выдает следующее: can't convert from BSON type missing to Date. Я немного посмотрел на логи, но ничего не нашел.

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