Допустим, у меня есть отношение родитель-ребенок-внук-и так далее в документе Cosmos, представленном следующим JSON:
"id": "someUniqueString",
"peepsNkids": [
"Jane": [
"Joe": [],
"Jocelyn": [
"Jerry": [],
"Jan": [
"Tom": [],
"Dick": [],
"Harry": []
],
"Jim": []
],
"Mary": [
"Moe": [],
"Larry": [],
"Dorothy": [
"Eadie": [],
"Phil": [],
"Lucille": [
"Desi Jr": []
]
]
]
]
Как я могу чисто запросить (в Storage Explorer и C #) поддерево, которое, используя синтаксис раздела «Поддокументы» этого поста под названием «Query DocumentDB» , разрешит:
SELECT * FROM peepsNkids.Jane.Jocelyn.Jan
... с ожиданием, что будет возвращено следующее?
[
"Tom": [],
"Dick": [],
"Harry": []
]
Не думаю, что мне нужно беспокоиться об оригинальном идентификаторе. В худшем случае я получаю несколько записей, которые имеют Jane.Jocelyn.Jan
, и, поскольку в моей "реальной" настройке все "имена" - это уникальные идентификаторы, возвращение нескольких строк указывает на серьезную проблему схемы.
Я, очевидно, могу создать потенциально циклическую объектную модель с string name
и List<PersonAndKids> peepsNkids
, затем получить обратно запись full для идентификатора "someUniqueString"
и , а затем обойти объекты с большим количеством peepsNkids.TryGetValue("Jane", out firstParent)
видов вещей, но я ищу способ сделать это в Космосе, а не в памяти моего сервиса.