无法从缺少的BSON类型转换为日期

时间:2019-03-13 10:51:03

标签: mongodb mongodb-query

我有一个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。我看了一下变更日志,但什么也没找到。

0 个答案:

没有答案