У меня проблема с запросом со структурой агрегации.Для данной коллекции с такими документами, как:
db.testSize.insert([{
"internalId" :1,
"first" : {
"second" : [
{
"value" : 1
}
]
}
}])
эта агрегация:
db.testSize.aggregate([
{ $addFields: { tmpSize: { $strLenCP: { $ifNull: [ { $toString: "$first.second.value" }, "" ] } } } },
])
возвращает эту ошибку:
{
"message" : "Unsupported conversion from array to string in $convert with no onError value",
"ok" : 0,
"code" : 241,
"codeName" : "ConversionFailure",
"name" : "MongoError"
}
Теперь решение этой проблемы заключается виспользуйте unwind следующим образом:
db.testSize.aggregate([
{ $unwind: "$first.second"},
{ $addFields: { tmpSize: { $strLenCP: { $ifNull: [ { $toString: "$first.second.value" }, "" ] } } } },
])
Но мое требование состоит в том, чтобы создать общий подход для документов с различной формой и возможным вложенным массивом внутри массива.Из-за этой ошибки https://jira.mongodb.org/browse/SERVER-6436 кажется невозможным развернуть массив внутри массива, так как решить эту проблему?
Есть подход?
Некоторый контекст:
- Я не могу изменить структуру документа до агрегирования
- Я не знаю, где массив будет в «иерархии полей», если, например, первый - это массив, или второй -
Заранее спасибо