Создание нескольких агрегатов с помощью RestHeart

Я использую RestHeart, чтобы делать вызовы REST для запросов агрегации MOngoDB. Я пытаюсь создать несколько агрегаций как одноразовое действие, а затем выполнить их всякий раз, когда они понадобятся мне позже. В настоящее время я вижу, что одновременно создается только одна агрегация. Если я создаю новый, он перезаписывается.

Можно ли создать несколько агрегатов как одноразовое действие с другим URI?

Таким образом, я могу позже вызвать URI, и мне не придется каждый раз переписывать запросы агрегации.

1 ответ

Решение

RESTHeart позволяет определять агрегаты через свойство коллекции aggrs. Смотрите документацию здесь https://softinstigate.atlassian.net/wiki/x/AwDw

aggrs - это массив определений агрегации, например:

aggrs: [ { <aggregation_1> }, { <aggregation_2> }, ... ]

определение агрегации:

{
   "type":"pipeline",
   "uri": <uri>,
       "stages": [
       "<stage_1>",
       "<stage_2>",
       ...
   ]
}

каждая агрегация связана с URI, указанным в определении, под /db/coll/_aggrs, так:

GET /db/coll/_aggrs/aggreation1
GET /db/coll/_aggrs/aggreation2

Вы говорите, что ваша агрегация перезаписана, я подозреваю, что вы обновляете свою коллекцию, заменяя массив aggrs. Обязательно обновите свойства коллекции всеми вашими определениями агрегации в массиве aggrs.

Итак, чтобы создать первую агрегацию, используя блестящий инструмент httpie cli

http PATCH <ip>/db/coll aggrs:='[ {<aggregation_1>} ]'

Чтобы создать вторую агрегацию, вы можете передать весь массив aggrs:

 http PATCH <ip>/db/coll aggrs:='[ {<aggregation_1>}, {<aggregation_2>} ]'

или добавьте второй в массив aggrs, используя оператор обновления $addToSet

 http PATCH <ip>/db/coll aggrs:='{"$addToSet": {"aggrs": {<aggregation_2>}}}'
Другие вопросы по тегам