Легкий способ упорядочить результат после того, как mongo возвращает массив, состоит в том, чтобы сделать объект с идентификатором в качестве ключей, а затем отобразить на заданный _id, чтобы вернуть упорядоченный массив.
async function batchUsers(Users, keys) {
const unorderedUsers = await Users.find({_id: {$in: keys}}).toArray()
let obj = {}
unorderedUsers.forEach(x => obj[x._id]=x)
const ordered = keys.map(key => obj[key])
return ordered
}
Как предложил @ Nick.McDermaid, попробуйте очистить данные и выполнить приведение с использованием производного столбца, прежде чем вставить его в SQL Server. Также убедитесь, что вы проверите для значений NULL. Вы можете использовать следующее выражение:
ISNULL([Price]) ? NULL(DT_CY) : ([Price] == "" ? NULL(DT_CY) : (DT_CY)(REPLACE(REPLACE((DT_WSTR,50)[Price],"$",""),",","")))
После удаления знака $
и запятых ,
операция приведения будет работать нормально.
Полезная ссылка
Я думаю, вам нужно использовать CONVERT следующим образом:
(DT_DECIMAL,3)[Price]
Вы можете найти информацию о функции CAST: https://docs.microsoft.com/en-us/sql/integration -services / expressions / cast-ssis-expression? view = sql-server-2017
Это способ преобразования в SSIS.