Я перенесу некоторые данные из Azure SQL в CosmosDB. Я использую инструмент переноса данных CosmosDB. В базе данных SQL у меня есть отношение многие ко многим между людьми и избранными. Я хочу перенести избранные имена в простой массив в документе CosmosDB. Я пока не нахожу способ сделать это. В документации рекомендуется использовать FOR JSON AUTO
, который преобразует подзапрос в JSON массив объектов.
Ниже приведен запрос в его нынешнем виде. Это не то, что я хочу.
SELECT
p.Id AS [id],
p.FirstName AS [name.first],
p.LastName AS [name.last],
o.City AS [office.City],
o.[State] AS [office.State],
c.ReminderEmailEnabled AS [reminderEmail],
(SELECT f.[Name] FROM dbo.Favorites f JOIN dbo.PersonFavorite pf ON pf.FavoriteId = f.Id AND pf.PersonId = p.Id FOR JSON AUTO) AS [favorites]
FROM dbo.Persons p
LEFT JOIN dbo.Offices o ON o.Id = p.OfficeId
При использовании этого запроса результирующий документ JSON в CosmosDB выглядит следующим образом:
{
"name": {
"first": "Donald",
"last": "Duck"
},
"office": {
"City": "Ann Arbor",
"State": "MI"
},
"reminderEmail": true,
"favorites": "[{\"Name\":\"Red\"},{\"Name\":\"Green\"}]",
"id": "some guid",
}
Он превращается в строку, поэтому он затем добавляет escape-символы и его массив JSON объектов.
Что я хочу:
{
"name": {
"first": "Donald",
"last": "Duck"
},
"office": {
"City": "Ann Arbor",
"State": "MI"
},
"reminderEmail": true,
"favorites": ["Red","Green"],
"id": "some guid",
}
Как я могу изменить свой запрос, чтобы добиться этого с помощью инструмента переноса данных?