#mongodb #mongodb-query #aggregation-framework
Вопрос:
Я хочу отсортировать данные, длина массива result.template которых больше, чем у других
например, идентификатор объекта 5808d700536d1a3d69f4cf57 содержит четыре элемента, которые означают, что это будет первый результат. но когда объект результата не существует, тогда он говорит, что аргумент $size должен быть массивом, но был типа: отсутствует. Как это исправить, пожалуйста, укажите
db={
products: [
{
"_id": ObjectId("5808d700536d1a3d69f4cf51"),
result: {
"template": [
"Mcd",
"ded",
"GCD"
]
},
dataB: true
},
{
"_id": ObjectId("5808d700536d1a3d69f4cf53"),
result: {
"template": [
"CCD",
"GHG"
]
}
},
{
"_id": ObjectId("5808d700536d1a3d69f4cf56"),
},
{
"_id": ObjectId("5808d700536d1a3d69f4cf57"),
result: {
"template": [
"VVD",
"SSD",
"Fsd",
"Xcd",
]
}
},
{
"_id": ObjectId("5808d700536d1a3d69f4cf43"),
},
]
}
Проверьте это https://mongoplayground.net/p/Wg144t8fvso
Ответ №1:
Вы можете попробовать
"count": {
"$size": {
"$cond": [
{
"$isArray": "$result.template"
},
"$result.template",
[]
]
}
}