Для своего приложения я использую отдельные базы данных MongoDB для разных арендаторов.
Так что для двух арендаторов "abc" и "xyz" у меня будет две базы данных "tenant_abc" и "tenant_xyz".
Теперь мне нужно скопировать базу данных tenant_abc
в базу данных tenant_xyz
, но у меня проблемы с DBRefs.
Итак, я делаю:
mongodump --db tenant_abc --out /backup/
Тогда я попробую два варианта:
mongorestore --db tenant_xyz /backup/tenant_abc
mongorestore --nsFrom "tenant_abc.*" --nsTo "tenant_xyz.*" /backup
Оба решения импортируют tenant_abc
в tenant_xyz
, но объекты DBRef остаются прежними.
Итак, если я перечислю коллекцию в tenant_abc
, я получу:
{
"_id": "9649380a-d639-4b51-aa83-39ee42daf494",
"label": "Group 1",
"importance": 10,
"entity": DBRef("Entities", "5ed723ac-bfae-49c5-a13a-b3b54316db77", "tenant_abc"),
"type": "entity_bound",
"deletedAt": null,
"employees": [
DBRef("Employees", "0222d601-b15a-46ec-a170-267ed6202937", "tenant_abc")
]
} {
"_id": "13f9bf36-6e9b-494e-b1a4-c24d6d964236",
"label": "Group 2",
"importance": 10,
"entity": DBRef("Entities", "9326883e-63d8-451e-8bbc-d6bef87e5a0c", "tenant_abc"),
"type": "entity_bound",
"deletedAt": null,
"employees": [
DBRef("Employees", "51dceacb-4dc7-4865-b11a-b28cb1f44f7d", "tenant_abc"),
DBRef("Employees", "81f4d0e1-92d5-4ce1-abec-db91b40647f9", "tenant_abc"),
DBRef("Employees", "9296944c-7ffe-48af-8465-f38dc4687ca7", "tenant_abc"),
DBRef("Employees", "ecf19570-9034-4ebe-949a-a6a60578d47d", "tenant_abc"),
DBRef("Employees", "65f6c687-f924-4198-b997-76332916dcc2", "tenant_abc"),
DBRef("Employees", "435f1011-17de-46f7-a8f1-2b318649b99b", "tenant_abc"),
DBRef("Employees", "b222eb4d-100a-4f42-8de8-e559865779ad", "tenant_abc")
]
}
Мой ожидаемый результат:
{
"_id": "9649380a-d639-4b51-aa83-39ee42daf494",
"label": "Group 1",
"importance": 10,
"entity": DBRef("Entities", "5ed723ac-bfae-49c5-a13a-b3b54316db77", "tenant_xyz"),
"type": "entity_bound",
"deletedAt": null,
"employees": [
DBRef("Employees", "0222d601-b15a-46ec-a170-267ed6202937", "tenant_xyz")
]
} {
"_id": "13f9bf36-6e9b-494e-b1a4-c24d6d964236",
"label": "Group 2",
"importance": 10,
"entity": DBRef("Entities", "9326883e-63d8-451e-8bbc-d6bef87e5a0c", "tenant_xyz"),
"type": "entity_bound",
"deletedAt": null,
"employees": [
DBRef("Employees", "51dceacb-4dc7-4865-b11a-b28cb1f44f7d", "tenant_xyz"),
DBRef("Employees", "81f4d0e1-92d5-4ce1-abec-db91b40647f9", "tenant_xyz"),
DBRef("Employees", "9296944c-7ffe-48af-8465-f38dc4687ca7", "tenant_xyz"),
DBRef("Employees", "ecf19570-9034-4ebe-949a-a6a60578d47d", "tenant_xyz"),
DBRef("Employees", "65f6c687-f924-4198-b997-76332916dcc2", "tenant_xyz"),
DBRef("Employees", "435f1011-17de-46f7-a8f1-2b318649b99b", "tenant_xyz"),
DBRef("Employees", "b222eb4d-100a-4f42-8de8-e559865779ad", "tenant_xyz")
]
}
Как я могу заменить все DBRef (которые используются во многих местах, иногда вложенные в несколько уровней) с правильными значениями?