Я объединяю два документа в один. Для этого я хочу заменить все ссылки на DocA ссылками на DocB.
Я хочу сделать это для всех документов и всех коллекций в базе данных. Во всех коллекциях / моделях каждая ссылка на этот тип документа использует один и тот же ключ, «docFieldKey». Однако путь часто отличается, поэтому иногда он находится на верхнем уровне, иногда в массиве объектов в документе.
ExModelA: {
_id: ObjectId,
docFieldKey: string // if docAId, replace with docBId
}
Ссылка на docA может быть в подполе, например:
ExModelB: {
_id: ObjectId,
someKey: {
docFieldKey: string // if docAId, replace with docBId
}
}
DocAId может быть еще глубже, как в массиве объектов.
ExModelC: {
_id: ObjectId,
someKey: [{
docFieldKey: string // if docAId, replace with docBId
otherKey: any
}]
}
Я хочу найти все поля с именем "docFieldKey", проверить их значение, а если docAId, то заменить на docBId. Какой самый простой способ сделать это? Есть ли запрос mon goose, который мог бы выполнить тяжелую работу?
Примечание: я ожидаю, что периодически потребуется замена документов в системе, поэтому я пытаюсь создать этот сценарий для произвольного docFieldKey, чтобы его можно было повторно использовать ,