Мы храним такие документы:
{
"FullName": "Jim",
"Children": [
{
"Name": "Sue",
"Hobbies": [
{
"Title": "Stamps",
"EnthusiasmLevel": 1
},
{
"Title": "Baseball",
"EnthusiasmLevel": 5
}
]
},
{
"Name": "Frank",
"Hobbies": [
{
"Title": "Dance",
"EnthusiasmLevel": 3
},
{
"Title": "Juggling",
"EnthusiasmLevel": 2
}
]
}
]
}
Обычно, когда мы извлекаем эту запись «Джима», мы хотели бы получить полную информацию о нем и его детях, но при определенных обстоятельствах нам понадобится его имя, а также только имя каждого ребенка и название каждого из их детей. хобби.
Существует ли прямой (или нет) способ извлечения только частей этих документов при сохранении (или перестройке на лету) их структуры?
Если я попробую что-то вроде:
SELECT p.FullName, [{"Name": child.Name}] AS Children
FROM People AS p
JOIN child in p.Children
Я могу построить массив, но я (очевидно, за соединение) получаю запись для каждого ребенка вместо одного. Если я вместо этого удаляю объединение и пытаюсь получить доступ к этим свойствам через родительскую коллекцию, я не могу получить их.
Я хочу получить обратно:
{
"FullName": "Jim",
"Children": [
{
"Name": "Sue",
"Hobbies": [
{"Title": "Stamps"},
{"Title": "Baseball"}
]
},
{
"Name": "Frank",
"Hobbies": [
{"Title": "Dance"},
{"Title": "Juggling"}
]
}
]
}
Даже если бы мне пришлось потерять структуру, я все равно хотел бы вернуть единственную запись, представляющую «Джима», которая содержит имена и увлечения его детей, но сейчас я просто извлекаю все и выполняю фильтрацию на клиентская сторона, что не идеально.
Что я после возможного?