У меня есть объект JSON, хранящийся в базе данных Azure Cosmos, и я вижу, есть ли способ написать работоспособные запросы, выполняющие такие базовые вещи, как Order By.
Структура выглядит примерно так:
[
{
"id":"id1",
"title":"test title",
"dataRecord":{
"version":1,
"dataRecordItems":[
{
"itemTitle":"item title 1",
"type":"string",
"value":"My First Title"
},
{
"itemTitle":"item number",
"type":"number",
"value":1
},
{
"itemTitle":"date",
"type":"date",
"value":"21/11/2019 00:00:00"
}
]
}
},
{
"id":"id2",
"title":"test title again",
"dataRecord":{
"version":1,
"dataRecordItems":[
{
"itemTitle":"item title 2",
"type":"string",
"value":"My Second Title"
},
{
"itemTitle":"item number",
"type":"number",
"value":2
},
{
"itemTitle":"date",
"type":"date",
"value":"20/11/2019 00:00:00"
}
]
}
]
Я могу использовать ARRAY_CONTAINS для поиска объектов с определенным значением, но я сталкиваюсь со всеми видами проблем, если пытаюсь отсортировать по значению объекта с заголовком «date».
Итак, в качестве примера, я хотел бы иметь возможность сказать что-то вроде (псевдошумный код здесь):
SELECT * FROM c WHERE
ARRAY_CONTAINS(c.dataRecord.dataRecordItems,
{"itemTitle":"item title 2", "value" : "My Second Title"}, true)
AND
ARRAY_CONTAINS(c.dataRecord.dataRecordItems,{"itemTitle":"item number", "value" : 2}, true)
ORDER BY < *** SOMEHOW GET THE DATE HERE from itemTitle = date ***
Тогда, в этом простом случае, я бы все вернул, но упорядочил по дате. .
Очевидно, что в будущем я буду вытаскивать отдельные поля, но если я не смогу выполнить первую часть, это будет спорным вопросом.
Просто интересно, есть ли у кого-нибудь великие идеи.
Ура!