Поле суммирования MongoDB документа во время запроса - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу выполнить запрос mongodb, который будет извлекать документы до тех пор, пока сумма полей этих документов не превысит значение. Например, если у меня есть следующие документы

{id: 1, qty: 40}
{id: 2, qty: 50}
{id: 3, qty: 30}

и у меня установлено количество 80, я бы хотел получить id1 и id2, потому что 40 + 50 - это 90, а сейчас - больше 80. Если бы я хотел количество 90, я бы также получить id1 и id2. Кто-нибудь знает, как сделать запрос таким образом? (Я использую Go кстати - но любой общий совет go очень помог бы с запросом)

1 Ответ

1 голос
/ 17 апреля 2020

Поскольку вы храните текущую сумму определенного поля, самый простой способ сделать это - выполнить операцию Find, получить курсор и выполнить итерацию курсора, сохраняя сумму самостоятельно, пока не будет достигнута необходимая сумма. Затем закройте курсор и верните:

cursor, err:=coll.Find(context.Background(),query)
sum:=0
defer cursor.Close(context.Background())
for cursor.Next(context.Background()) {
   cursor.Decode(&data)
   sum+=data.Qty
   if sum>=80 {
      break
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...