PDI Kettle — как указать ObjectId для соответствия запроса в выводе MongoDB

Используя вывод PDI Kettle MongoDB, я пытаюсь обновить документ mongodb, запрашивая поле _id (ObjectId). Если я передам переменную _id как строку на шаг вывода MongoDB, окончательный созданный запрос будет выглядеть так:

    Modifier update query:

{
  "_id" : "<string val>"
}

который может окончательно преобразоваться во что-то вроде

    Modifier update query:

{
  "_id" : "579c18b47f34b4330f85a981"
}

Это может быть причиной того, что запрос не находит документ, и обновление завершается сбоем с ошибкой " Нет полей для обновления, которые были указаны для операции обновления модификатора! "

Есть ли способ указать запрос, как показано ниже?

{"_id" : ObjectId(579c18b47f34b4330f85a981)}

Или я вижу ошибку по какой-то другой причине?

Найдите скриншот вкладки «Поля документа mongo». введите здесь описание изображения


person Mahesh    schedule 31.07.2016    source источник
comment
На данный момент он работает, передавая Shard Keys вместо _id . Но все же, если бы мне пришлось искать по _id , как бы я указал его в запросе, используя компонент вывода PDI Kettle — MongoDB?   -  person Mahesh    schedule 02.08.2016


Ответы (1)


Во-первых, вы можете использовать шаг «Javascript», чтобы преобразовать значение «_id» в формат JSON:

_id = '{ "$oid": "' + _id + '" }'

Затем в последней строке шага «Вывод MongoDB» вы должны установить для атрибута JSON значение Y.

person Hobbes    schedule 01.09.2016