размещение отсортированной записи в хранилище данных Google Appengine
-
24-09-2019 - |
Вопрос
Я хотел бы определить, в каком месте находится конкретная запись, но соответствующий запрос GQL ускользает от меня.В идеале я хотел бы знать следующие детали, которые, похоже, должны быть известны хранилищу данных.Я просто не могу понять, как это определить.Может ли кто-нибудь помочь?
- размещение конкретной записи (в заданной сортировке, т.е.по определенному свойству)
- общее количество существующих записей (без их получения, только подсчет)
- следующая запись в списке (я полагаю, что пока я могу получить место, я могу сделать правильный запрос, чтобы получить следующую запись, просто получив 2 и выбрав последнюю)
Может ли кто-нибудь помочь?
Решение
Если вы используете Python, ознакомьтесь с google-app-engine-ranklist проект, который реализует список рангов в хранилище данных App Engine.
Другие советы
GQL очень ограничен и на самом деле существует только для того, чтобы дать людям, застрявшим в мышлении SQL, немного более простой переход к использованию хранилища данных App Engine.Вы не можете делать ничего из того, что хотите, с помощью синтаксиса GQL.
Предполагая, что вы используете Python, второе можно сделать, вызвав метод .count() объекта db.Query или db.GqlQuery с оговоркой, что вы должны указать максимальное число для подсчета в качестве параметра для count(). , и что этот максимум не может быть больше 1000.
Вы не сможете найти конкретную запись в наборе результатов, не выбрав их все и не выполнив поиск.Последнее становится тривиальным, поскольку вы уже получили все объекты, и вам просто нужно получить следующий.
Ничто из этого не будет эффективным;хранилище данных не предназначено для таких вещей.