У меня есть агрегация 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
. Я немного посмотрел на логи, но ничего не нашел.