как запросить сложное свойство в облачном хранилище данных Google

#google-app-engine #google-cloud-datastore #nosql

#google-app-engine #google-cloud-хранилище данных #nosql

Вопрос:

У меня есть объект, созданный в хранилище данных со сложным свойством (или документом? Я точно не знаю, как это назвать! Пожалуйста, скажите мне правильное имя для него), который выглядит следующим образом:

 taskId: "T101",
taskType: "Pick",    
itemInfo:
{
 "id":"00014",
 "actualQty":"1",
 "attributes":[{"value":"Large","name":"Size"},"value":"Blue","name":"Color"}],
 "requiredQty":"10",
 "imageUrl":" ",
 "upc":"886654801"
} 
  

Я хочу запросить поле upc в свойстве ItemInfo. (Пожалуйста, не просите меня переместить upc из свойства ItemInfo!). Я знаю, что для запроса чего-либо нам нужно определить индекс, и у меня есть TaskId в моем index.yaml.

что-то вроде:

 select * from Task where itemInfo.upc = "<some value>";
  

Пожалуйста, скажите мне, что мы можем это как-то сделать!

Спасибо.

Ответ №1:

Предполагая, что тип объекта находится Task в хранилище данных и что у него есть taskId taskType свойства и itemInfo свойства, itemInfo являющиеся встроенной сущностью, упомянутый вами запрос должен работать нормально.

 SELECT * FROM Task WHERE itemInfo.upc='886654801'
  

Просто имейте в виду, что имена и значения свойств чувствительны к регистру. Кроме того, itemInfo свойство должно быть проиндексировано.