Я пытаюсь подсчитать количество документов, которые находятся в каждом возможном состоянии в конкретной коллекции Aran go.
Это должно быть возможно за 1 проход по всем документам с использованием сортировки по сегментам например, стратегия, в которой вы перебираете все документы, если значение для состояния ранее не было видно, вы добавляете счетчик со значением 1 в список. Если вы видели это состояние раньше, вы увеличиваете счетчик. Как только вы дойдете до конца, у вас будет счетчик для каждого возможного состояния в БД, который указывает, сколько документов в настоящее время хранится в этом состоянии.
Кажется, я не могу понять, как писать этот тип логи c в AQL для отправки в качестве запроса. Текущая стратегия выглядит следующим образом:
- L oop по всем документам, фильтруя только документы определенного состояния.
- L oop по всем документам, фильтруя только документы отличается конкретное состояние.
- ...
- Все состояния были отфильтрованы.
- Возвращаемый размер каждого набора
Это работает, но я уверен, что это намного медленнее, чем должно быть. Это также означает, что если мы добавляем новое состояние, мы должны обновить запрос до l oop по всем документам дополнительное время, фильтруя по новому состоянию. Запрос типа корзины будет быстрым и не требует обновления, так как создаются новые состояния.
Если бы это были документы:
Тогда я бы хотел получить результат be {A: 2, B: 2, C: 1} где A, B, & C - значения для определенного поля. Фильтры текущей стратегии, например,
LET docsA = (
FOR doc in collection
FILTER doc.state == A
RETURN doc
)
Затем вручную создайте объект возврата, вызывающий LENGTH, для каждого списка документов
Любая помощь или дополнительная информация будет принята с благодарностью