Операторы равенства не работают в хранилище данных GQL для переполнения стека

Вот запрос в GQL, который не работает на изменено> отметка времени

        $query = $ds->query()
->kind('Video')
->filter('email', '=', $email)
->filter('lat', '=', $lat)
->filter('lng', '=', $lng)
->filter('modified', '>', 1505807001);

$result = $ds->runQuery($query);

Запрос работает нормально, если пропущена отметка времени больше, чем. В противном случае не работает.

Возвращает исключение. Выдержка:

{
"error": {
"code": 400,
"message": "no matching index found. recommended index is:\n- kind:
Video\n  propert (truncated...)

Любая помощь с этим будет высоко ценится.

1

Решение

Вам нужно добавить явный составной индекс (https://cloud.google.com/datastore/docs/concepts/indexes) по вашему запросу.

Без неравенства Cloud Datastore может использовать встроенные индексы для выполнения вашего запроса, но с неравенством временных меток Cloud Datastore не сможет выполнить ваш запрос.

Возможно, вам понадобится определение индекса, например:

indexes:
- kind: Video
properties:
- name: email
direction: desc
- name: lat
direction: desc
- name: lng
direction: desc
- name: modified
direction: asc

Как навскидку, если лат & lg — это географические точки, вы, вероятно, захотите использовать что-то вроде геохаширования (http://hitching.net/2009/11/10/scalable-fast-accurate-geo-apps-using-google-app-engine-geohash-faultline-correction/)

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]