Как выполнить приведение типов в запросе агрегации MongoDb в версии 3.6 - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть поле вроде этого

MyField : {
    "100": "1",
    "50" : "5"
}

И есть другое поле типа int. Назовите это IntField.

Я хочу получить значение MyField в соответствии со значением IntField, практически то, что я хочу, это MyField [IntField].

Я пытался сделать это так:

$project: {
    Value : {$arrayElemAt:
                [{$filter:
                     input:{$objectToArray:"$MyField"},
                     as : "m",
                     cond:{$eq:["$$m.k","$IntField"]}} // k means key when i use objectToArray
                  },
                0]}, 
}

Я ожидал вывода как 5, если IntField равен 50, и 1, если IntField равен 100.

Однако, поскольку «$$ m.k» является строкой, а «$ IntField» - int, они никогда не совпадают.

Я пробовал $ convert, но моя версия ниже 4.0, поэтому она не работает.

Как я могу решить эту проблему ?. Спасибо за любое предложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...