#mongodb #aggregation-framework
#mongodb #структура агрегации
Вопрос:
Я хочу суммировать два поля из коллекции Mongo; поля могут быть строкой, числом или не существовать; эти две стратегии в конвейере агрегации, похоже, не работают (я всегда получаю нулевое значение как Int32) Первая стратегия:
"field1": {
$sum: {
$add: [
{
$toInt: {
$ifNull: [
"$field2",
0
]
}
},
{
$toInt: {
$ifNull: [
"$field3",
0
]
}
}
]
}
},
Вторая стратегия:
"field4": {
$sum: {
$add: [
{
$convert: {
input: {
$ifNull: [
"$field5",
0
]
},
to: "int",
onError: 0,
onNull: 0
}
},
{
$convert: {
input: {
$ifNull: [
"$field6",
0
]
},
to: "int",
onError: 0,
onNull: 0
}
}
]
}
},
Комментарии:
1. Использовать
{$match: {$expr: { $isNumber: "$field5" }}}
или{$match:{ field5: { $type: [ "double", "int", "long", "decimal" ] } } }
2. Можете ли вы показать нам некоторые из ваших документов и ожидаемые результаты?